Доступ к файлам из каталога ресурсов/www
скажем, у меня есть файл под названием foo.html
сидя (довольно удобный) в каталоге моих ресурсов /www (рядом с моим index.html).
Я хотел бы скопировать этот файл в другое место на устройстве. Мой первый подход window.resolveLocalFileSystemURI("foo.html", cool(), notCool());
не работает. Также с префиксом типа www/it не будет.
Было бы интересно узнать, действительно ли вообще можно получить доступ к файлам через Phonegap. Я не убежден и поэтому хотел бы увидеть фрагмент кода, как получить FileEntry для файлов в каталоге активов - если это возможно.
изменить:
Хорошо, теперь у нас есть такой вызов
window.resolveLocalFileSystemURI("file:///android_asset",
function(entry){
console.log(entry.fullPath);},
function(evt){
console.log(evt.code);}
);
но мы получаем ошибку с code: undefined
(Phonegap v1.2) и code: 1
с v1.0 (код 1 = файл не найден?!)
Ответы
Ответ 1
Вы должны иметь доступ к файлу следующим образом:
window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail);
Затем вы можете использовать File API - FileEntry.copyTo или FileEntry.moveTo для фактического выполнения действия. Примечание. Вы не можете записывать в папку assset/www, только на SD-карту.
Надеюсь, что это поможет
Ответ 2
Вы не можете делать то, что хотите. Файлы в каталоге активов не являются технически в файловой системе, поэтому они недоступны через File API. Это означает, что вызов window.resolveLocalFileSystemURI()
не вернет вам FileEntry.
Лучшее, на что вы можете надеяться, это получить доступ к этим файлам через XHR. Если они основаны на тексте, вы всегда можете взять результат XHR и записать его в файловую систему с помощью FileWriter. Я написал сообщение в блоге, в котором показано, как получить файл из каталога ресурсов с помощью XHR.
http://simonmacdonald.blogspot.com/2011/12/on-fourth-day-of-phonegapping-creating.html
Ответ 3
Leon - "вы не можете писать в папку assset/www, только на SD-карту". Первая часть верна, вы не можете написать путь к ресурсу /www. Но, если приложение установлено на устройстве, вы можете создавать и записывать в файл, и оно создается в корневом каталоге android. Если приложение установлено на SD-карте, этот файл создается в корневой карте SD. Файлы, созданные таким образом, НЕ удаляются или изменяются при очистке пользовательских данных для приложения и НЕ удаляются при удалении приложения.