Apache Cordova не может прочитать файл из корневого каталога

Я пытаюсь прочитать файл, используя кордову с этим кодом. Но я не могу увидеть предупреждение внутри функции fileSystem.root.getFile.

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
           function (fileSystem) { 
               alert("root name=" + fileSystem.root.name); //alert working
              //after this not working 
               var path = "index.html";
               fileSystem.root.getFile(path, null, function (fileEntry) {
                   alert('file entry');

                   fileEntry.file(gotFile, fail);

               }, fail);
           }, fail);

       function fail(error) {
           alert("File System Error:" + error.code);
       }

Я получаю код ошибки 1. Я использую плагин гибридного приложения Visual Studio Cordova (2013).

Обновление решено:

Я решил проблему, перейдя в мой bin -> каталог Windows Phone. Затем я переименовал файл .xap в .zip, чтобы извлечь содержимое. Я нашел там, что мои файлы правильно развернуты вместе с плагинами Cordova. Но мои файлы были внутри каталога www. Итак, я выделил путь, и теперь он работает;

var path = "www/index.html"; 

Но мне действительно интересно, почему документация Cordova не упомянула об этом, но в любом случае я решил это сейчас;


person Idrees Khan    schedule 19.08.2014    source источник
comment
Здравствуйте, можете ли вы добавить платформу, на которой вы получили этот код ошибки?   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR в Windows Phone   -  person Idrees Khan    schedule 25.08.2014
comment
Windows Phone 8? 8.1?   -  person Nicolas R    schedule 25.08.2014
comment
Windows Phone 8, потому что по умолчанию плагин Cordova для Visual Studio запускает симулятор wp 8, но я развертываю его на wp8.1, все та же ошибка   -  person Idrees Khan    schedule 25.08.2014
comment
Возможно, вы можете попытаться составить список каталогов в своем хранилище, чтобы убедиться, что вы действительно находитесь там, где думаете, как это сделал ОП этого вопроса: stackoverflow.com/questions/24600166/ Звучит просто, но со всей изолированной частью Storage в WP, возможно ты должен проверить   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR, и он работает в тестовом плагине для браузера Cordova Ripple. Так что я думаю, это может быть проблемой.   -  person Idrees Khan    schedule 25.08.2014
comment
Что работает? Ваш код вопроса? Я думаю, что нашел что-то интересное в коде плагина, но не могу проверить прямо сейчас. В коде C# он проверяет if (filePath.IndexOf("www") == 0) и, если нет, возвращает полученную ошибку...   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR да, мой код работает в браузере, но не в симуляторе   -  person Idrees Khan    schedule 25.08.2014
comment
Можете ли вы проверить в эмуляторе метод из вопроса, который я предоставил? А еще, вы используете PhoneGap 3.5?   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR, обязательно попробую   -  person Idrees Khan    schedule 25.08.2014
comment
У меня это не работало в Ripple или любом другом эмуляторе в VS2015 или на реальном устройстве (Windows Phone или Surface Pro).   -  person AH.    schedule 18.03.2016


Ответы (4)


Я только что разместил ответ на аналогичный вопрос с примером рабочего кода здесь: Загрузка массива из текстового файла в phonegap

Кстати, я думаю, что ответ Абхишека весьма полезен.

person mentat    schedule 26.08.2014
comment
Извините, но... как ваш ответ поможет здесь? - person Nicolas R; 26.08.2014
comment
@NicolasR Исходный код плаката не работает, похоже, что использование файлов API проблематично. Я привел рабочий (проверенный) пример кода, который делает то же самое немного по-другому, так что полагаю, он поможет. В качестве альтернативы я указал, что ответ Абхишека также хорош, у ОП был другой комментарий (в котором говорилось, что он не работает), когда я, кстати, опубликовал свой ответ. - person mentat; 26.08.2014
comment
@mentat, ваша ссылка была полезна, так как теперь она работает, когда я указываю путь к var path = "www/index.html";. Итак, я сделаю это как ваш кредит. - person Idrees Khan; 30.08.2014

Сообщается об ошибке, поскольку fileSystem.root.getFile не может найти index.html в расположении, указанном LocalFileSystem.PERSISTENT. Вы можете войти fileSystem.root.fullPath, чтобы найти путь, по которому fileSystem.root.getFile() просматривает ваше устройство или систему.

Файлы ваших приложений, такие как index.html, не сохраняются и не удаляются в LocalFileSystem.PERSISTENT, если только они не скопированы туда явным образом. Вы можете найти более подробную информацию о том, где LocalFileSystem.PERSISTENT указывает в вопросе SO к?

person Abhishek - MSFT    schedule 21.08.2014
comment
полный путь возвращен /, и мой index.html также находится в моем корневом каталоге - person Idrees Khan; 22.08.2014
comment
я извлек файл .xap, мои файлы находятся внутри папки www - person Idrees Khan; 30.08.2014

Пытаться:

var path = "./index.html";
person Brad Dean    schedule 19.08.2014

Вы должны объединить filesystem.root.name и ваш текущий путь, чтобы создать абсолютный путь к местоположению файла относительно файловой системы телефона, а затем передать его в параметр пути fileSystem.root.getFile. Сейчас твой путь неполный. Надеюсь, поможет!!

person Lakmal Caldera    schedule 30.08.2014