1

我刚开始使用 phonegap 进行 android 应用程序开发。我正在尝试使用这样的代码写入文件(按照 phonegag 示例)。

document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function writeText(file, text) {
    fileName = file;
    textToWrite = text;
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile(fileName, {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
  writer.seek(writer.length);
  writer.write(textToWrite);
  console.log("Output: " + textToWrite);
}

function fail(error) {
    console.log(error.code);
}

在 Eclipse 作为调试器的 android 模拟器中,我可以看到这些行已执行(打印出日志行)。任何地方都没有错误。但是,我在系统中找不到该文件。文件应该放在哪里?我可以在 Windows 中查看它吗?

这就是我如何称呼作家。writeText("test.txt", "结束...");

文件 test.txt 在哪里?或者,也许我完全弄错了?

非常感谢!

4

2 回答 2

2

在我的设备(Cordova 3.3)上写入的位置是,/storage/sdcard0但它也在/storage/emulated/legacy.

您可以通过记录dir.filePath文件写入时间来找到位置

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onRequestFileSystemSuccess, null); 

function onRequestFileSystemSuccess(fileSystem) { 
  var entry=fileSystem.root; 
  entry.getDirectory("directory", {create: true, exclusive: true}, onGetDirectorySuccess, onGetDirectoryFail);
} 

function onGetDirectorySuccess(dir) { 
   console.log("Created directory "+ dir.name + ", FilePath: "+ dir.fullPath);
} 

function onGetDirectoryFail(error) { 
   console.log("Error creating directory "+error.code); 
} 

希望有帮助!

于 2014-01-08T21:42:14.143 回答
0

我相信 PhoneGap 会将文件/mnt/storage/sdcard0放在设备上。

对于模拟器,您可以通过这样做找到它 -

  1. 切换到DDMS视角
  2. 在设备列表中选择要探索其 SD 卡的模拟器。
  3. 打开右侧的文件资源管理器选项卡。
  4. 展开树结构。mnt/sd卡/

在此处输入图像描述

我建议在您的内部放置一个回调函数,gotFileWriter以确切知道写入何时完成 -

function gotFileWriter(writer) {
    writer.onwriteend = function(evt) {
        console.log('write has finished');
    };
    writer.seek(writer.length);
    writer.write(textToWrite);
}
于 2013-08-07T23:55:56.580 回答