3

你能告诉我如何删除phonegap中文本文件的竞争吗?我有文本文件,上面有一些文本。我想在插入新文本之前删除该文本。这可能在 phonegap 中吗?我可以读取、写入、删除文件。但是如何删除文件的争用?

4

3 回答 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 contentsaved 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 回答