2

我正在使用 phonegap 文件读取功能,一旦我阅读了内容,我将对该内容执行一些功能,一旦完成,我将调用文件截断功能。因为我不能截断任何值。帮我解决这个问题。

removeFileContent();

function removeFileContent(){
    console.log("Inside remove file content");
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFileTruncate, onProcessFailure);
};

function gotFileTruncate(fileSystem){
    console.log("Inside get file path for remove content");
    /** Function to get file path */
    filePath = getFilePath(device.platform);
    console.log("Device File Path to remove content-->"+this.filePath);
    fileSystem.root.getFile(filePath, null, gotFileEntryTruncate, onProcessFailure);
}

function gotFileEntryTruncate(fileEntry){
    globals.raiseLog("Inside file to truncate call");
    globals.raiseLog("File Name-->"+fileEntry.name);
    fileEntry.createWriter(gotFileWriter, onProcessFailure);
}

function gotFileWriter(writer){
    globals.raiseLog("Inside file writer to truncate file content");
    globals.raiseLog("Content length-->"+writer.length);
    //writer.truncate(10);
    writer.onwriteend = function(evt) {
        writer.truncate(0);
        writer.onwriteend = function(evt) {
        };
    };
    writer.write("");
    globals.raiseLog("Content length after truncate-->"+writer.length);
}

在上面的 gotFileWriter() 中,如果我检查 writer.length 它仍然显示一些计数。我不知道我们为什么可以检查文件是否为空。我在该文件中有一些文本。当我完成文件的读取时需要清除文件。完成阅读功能后,我正在调用 removeFileContent()。请帮忙。

4

1 回答 1

3

编写代码的方式可能会导致文件仍然包含内容的误报。移动您的:

globals.raiseLog("Content length after truncate-->"+writer.length);

进入您的 onwriteend 函数,因为 write 调用是异步的,并且在打印日志之前可能无法完成。

于 2012-10-19T13:51:21.120 回答