Android Cordova-将文件保存到存储
我正在制作一个Cordova应用程序,需要从中导出一个文件。我想将文件保存到Android设备的存储器中:Android Cordova-将文件保存到存储,android,file,cordova,plugins,storage,Android,File,Cordova,Plugins,Storage,我正在制作一个Cordova应用程序,需要从中导出一个文件。我想将文件保存到Android设备的存储器中:/storage/emulated/0/。应用程序应该创建一个文件夹,在其中创建包含内容的文件 我尝试了cordova插件文件插件,但我不确定如何使用它。上有一些示例,但我不知道使用哪一个,有: 我都试过了,但都不管用 如果可能的话,我们将非常感谢您的帮助和示范 编辑 这是我使用的代码。我没有得到任何错误 function createFile(dirEntry, fileName
/storage/emulated/0/
。应用程序应该创建一个文件夹,在其中创建包含内容的文件
我尝试了cordova插件文件
插件,但我不确定如何使用它。上有一些示例,但我不知道使用哪一个,有:
function createFile(dirEntry, fileName, fileContent, isAppend) {
dirEntry.getFile(fileName, {create: true, exclusive: false}, function(fileEntry) {
writeFile(fileEntry, fileContent, isAppend);
}, fail);
}
function savePasswords(fileSystem) {
createFile("/sdcard/testFolder", "testfile.txt", "TEST", true);
}
function fail(error) {
alert("ERROR: " + error.code);
}
function request() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, savePasswords, fail);
}
document.addEventListener("deviceready", request, false);
我想用它在一个名为“testFolder”的文件夹中创建内容为“TEST”的文件“testfile.txt”。自Android 4.4以来,SD卡根目录(
/sdcard/
)是只读的,因此您无法对其进行写入。假设示例代码中对writeFile()
的引用引用了(因为它没有在代码中定义),则调用fileWriter.onerror()
函数时会出现错误代码不允许修改\u ERR
您必须写入SD卡上的应用程序存储目录(例如/sdcard/Android/data/your.app.package.id/
)。
您可以使用cordova插件文件
作为cordova.file.externalApplicationStorageDirectory
引用此位置
有关不同版本Android中SD卡访问的详细信息,请参阅
注:以上提到的“SD卡”指的是模拟SD卡(在内部存储器上(即/storage/emulated/0/
)。指的是一些Android设备中存在的外部/可移动SD卡(例如三星Galaxy S系列)无法通过cordova插件文件执行此操作,但是您可以使用从来执行此操作。此脚本可以:
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(["Content if there's nothing!"], { type: 'text/plain' });
}
fileWriter.write(dataObj);
});
}
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (rootDirEntry) {
rootDirEntry.getDirectory(fileDir, { create: true }, function (dirEntry) {
var isAppend = true;
dirEntry.getFile(fileName, { create: true }, function (fileEntry) {
writeFile(fileEntry, "Content!", isAppend);
// Success
});
});
});
错误是什么?与我们共享logcat/stacktrace!请同时添加一些代码。@Jordan刚刚添加了我使用的代码!:)好的,还可以检查你的logcat,看看是否有任何提示/警告我该怎么做?我没有在模拟器中运行应用程序(在线编译:Cocoon.io)。我正在我的设备上运行它。@Jordan在我登录之前,代码不应该是正确的吗?我认为问题在于我的代码。一个工作脚本的例子将是完美的!