你能告诉我如何删除phonegap中文本文件的竞争吗?我有文本文件,上面有一些文本。我想在插入新文本之前删除该文本。这可能在 phonegap 中吗?我可以读取、写入、删除文件。但是如何删除文件的争用?
问问题
1795 次
3 回答
5
您可以使用截断。
如果你以后要写,那就有点复杂了。你不能只是
writer.truncate(0);
writer.write("Leo was here");
如果你这样做似乎都不起作用,但每个人都可以单独工作。因此,要使其工作,您必须等到截断完成后再进行写入。在截断的 onwriteend 中添加写入。注意清除或更改 onwwriteend 很重要,否则您将获得无限循环。
所以从获取文件系统开始,使用文件系统获取文件入口
function clearFile(fileName){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
fileSystem.root.getFile(fileName, { create: false }, clearfileExists, fileDoesNotExist);
}, getFSFail);
}
假设您有一个文件条目(该文件存在)然后创建文件编写器。
function clearfileExists(fileEntry){
console.log("File " + fileEntry.fullPath + " exists!");
fileEntry.createWriter(truncateFile, fileDoesNotExist);
}
现在你有了一个文件编写器。调用 truncate(0) 并在 onwriteend 中清除 onwrite 端并写下你想要的。
function truncateFile(writer){
console.log("truncate");
writer.onwriteend= function(evt) {
LOG("write");
writer.seek(0);
writer.onwriteend = function(evt){
console.log("contents of file now 'Leo was Here'");
}
writer.write("Leo was Here");
}
writer.truncate(0);
}
为了完整起见,这里是错误情况的处理
function fileDoesNotExist(){
console.log("file does not exist");
}
function getFSFail(evt) {
console.log(evt.target.error.code);
}
于 2014-05-23T18:26:16.917 回答
0
您可以使用 truncate 方法将所有内容删除到一定数量,或者如果您要删除所有内容,您可以随时删除文件并创建一个新的空版本。
function win(writer) {
writer.truncate(0);
};
var fail = function(evt) {
console.log(error.code);
};
file.createWriter(win, fail);
于 2013-07-31T13:22:22.007 回答
0
可以得到Cordova File Plugin
相当。cumbersome
在此GIST
,我在file operations
的帮助下分解为多个部分,Promises
并能够实现以下目标operations
:
这是它的样子:
get a file
如果它已经存在。save the fileWriter
在记忆中read from the file
并将数据存储在内存中remove the file
使用保存的(内存中)fileWriter 参考。create a new file
同名。update the content
与saved content
+new content
write
这个内容到file
摘自要点:
var fileName = 'test-450.json';
var fileData;
var savedFileEntry = {};
promise_getPersistentDirectoryEntry()
.then(promise_fileEntry.bind(null, fileName, { create:false }))
.then(save_fileEntry)
.then(promise_file)
.then(promise_fileContent)
.then(save_fileData)
.then(remove_fileEntry)
.then(promise_getPersistentDirectoryEntry)
.then(promise_fileEntry.bind(null, fileName, {create:true}))
.then(promise_fileWriter)
.then(edit_content)
.then(promise_writeContent)
.then(promise_getPersistentDirectoryEntry)
.then(promise_fileEntry.bind(null, fileName, {create:false}))
.then(promise_file)
.then(promise_fileContent)
.then(res => {
logit('JSON.parse(res.target.result)', JSON.parse(res.target.result));
// logit('savedFileEntry', savedFileEntry);
logit('fileData', fileData);
})
.catch(err => logit('err', err));
祝你好运...
于 2019-03-09T10:43:30.923 回答