微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – cordova 3.x(phonegap) – 写入/ data / data生成encodingException

我正在尝试使用从here获取的以下代码在我的应用程序内存上写一个文件

    writeOnFileSystem : function() {
    console.log("writeOnFileSystem resolveLocalFileSystemURL ...");     
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
};

function gotFS(fileSystem) {
fileSystem.root.getFile("file:///data/data/com.company.app/readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

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

function gotFileWriter(writer) {
 ...
}

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

这引发了这样的异常:

05-14 12:16:55.704:W / System.err(27827):org.apache.cordova.file.EncodingException:此路径中包含无效的“:”.

我正在使用此字符串来访问我的/ data / data:
file:///data/data/com.company.app/readme.txt(com.company.app是我的应用程序的包)

>这是访问我的/数据/数据的正确方法吗?

如果我在SD上写入相同的代码,认情况下在Android上完成.

我在用:

科尔多瓦3.5.0-0.2.1

org.apache.cordova.file 1.0.1“文件

org.apache.cordova.file-transfer 0.4.4-dev“文件传输”

JQM

日食

解决方法:

编辑:虽然这个答案仍然有效,但Cordova File API还有很多变化

无论如何,

当你调用requestFileSystem时,它返回一个
FileSystem对象,其root属性是DirectoryEntry.

当您调用resolveLocalFileSystemURI时,它将返回DirectoryEntry或
FileEntry的.

所以在你的情况下你需要做

window.resolveLocalFileSystemURI("file:///data/data/{package_name}", onSuccess, one rror); 

function onSuccess(entry) { 
    entry.getDirectory("example", {create: true, exclusive: false},onGetDirectorySuccess, onGetDirectoryFail); 
}
function one rror(error){
console.log(error);
}

方法resolveLocalFileSystemURI将允许您访问/ data / data文件夹,然后从那里开始.

window.requestFileSystem的问题(LocalFileSystem.PERSISTENT,0,gotFS,失败);是在Android上,如果设备上安装了SD卡,它将为您提供SD卡路径,否则它将为您提供内部存储的路径(甚至不确定数据/数据/ {package_name}或其他地方) .如果你问我,这是有史以来最愚蠢的设计选择之一

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐