Может ли Cordova считывать / записывать файлы в приложении iOS «Файлы»? - PullRequest
6 голосов
/ 27 марта 2019

Кто-нибудь знает, можно ли получить доступ к данным приложения iOS «Файлы» через Cordova?Т.е. я хочу добавить свое приложение в список «Местоположения» в приложении «Файлы», а затем прочитать / записать эти файлы.Возможно ли это?

Спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019

Cordova-plugin-file реализует Файловый API, обеспечивающий доступ на чтение / запись к файлам, находящимся на устройстве.

Место постоянного хранения iOS

Существует два допустимых места для хранения постоянных файлов на устройстве iOS: каталог «Документы» и каталог «Библиотека».Предыдущие версии плагина только когда-либо сохраняли постоянные файлы в каталоге Documents.Это имело побочный эффект - все файлы приложения были видны в iTunes, что часто было непреднамеренным, особенно для приложений, которые обрабатывают много небольших файлов, а не создавало полные документы для экспорта, что и является целью каталога.

Теперь можно выбрать, сохранять ли файлы в документах или в каталоге библиотеки, с предпочтением в config.xml file вашего приложения.Для этого добавьте одну из этих двух строк в config.xml:

<preference name="iosPersistentFileLocation" value="Library" />
<preference name="iosPersistentFileLocation" value="Compatibility" />

Запись в файл

Как только у вас появится объект FileEntry, выможет записать в файл, вызвав createWriter, который возвращает объект FileWriter в обратном вызове успеха.Вызовите метод записи FileWriter для записи в файл.

function writeFile(fileEntry, dataObj) {
    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function (fileWriter) {

        fileWriter.onwriteend = function() {
            console.log("Successful file write...");
            readFile(fileEntry);
        };

        fileWriter.onerror = function (e) {
            console.log("Failed file write: " + e.toString());
        };

        // If data object is not passed in,
        // create a new Blob instead.
        if (!dataObj) {
            dataObj = new Blob(['some file data'], { type: 'text/plain' });
        }

        fileWriter.write(dataObj);
    });
}

Чтение файла

Вам также необходим объект FileEntry для чтения существующего файла.Используйте свойство файла FileEntry, чтобы получить ссылку на файл, а затем создайте новый объект FileReader.Вы можете использовать такие методы, как readAsText, чтобы начать операцию чтения.Когда операция чтения завершена, этот.результат сохраняет результат операции чтения.

function readFile(fileEntry) {

    fileEntry.file(function (file) {
        var reader = new FileReader();

        reader.onloadend = function() {
            console.log("Successful file read: " + this.result);
            displayFileData(fileEntry.fullPath + ": " + this.result);
        };

        reader.readAsText(file);

    }, onErrorReadFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...