如何删除phonegap中的文本文件内容?

时间:2013-07-31 12:20:41

标签: cordova

您能否告诉我如何删除phonegap中的文本文件? 我有文本文件,上面有一些文字。我想在插入新文本之前删除该文本。这可能在phonegap中吗? 我能够读取,写入,删除文件。但是如何删除文件的争议?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以使用truncate方法将所有内容删除到一定数量,或者如果您要删除所有内容,则可以随时删除该文件并创建新的空版本。

function win(writer) {
    writer.truncate(0);
};

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

file.createWriter(win, fail);

答案 2 :(得分:0)

Cordova File Plugin可以得到cumbersome。在此GIST中,我借助file operationsPromises分解为多个部分,并能够实现以下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

摘录自gist

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));

This is the Gist

祝你好运...