使用chrome文件系统写入时字符串中的Javascript空字符

使用chrome文件系统写入时字符串中的Javascript空字符,javascript,json,string,parsing,null,Javascript,Json,String,Parsing,Null,我在chrome打包的应用程序中使用filewriter来保存json字符串。我遵循了一些示例,其中writer被设置为按blob的长度截断,因此可以用更短的数据覆盖文件 this.writeLocalFile = function(){ chrome.fileSystem.getWritableEntry(self.localFile, function(writableEntry){ console.log(writableEntry);

我在chrome打包的应用程序中使用filewriter来保存json字符串。我遵循了一些示例,其中writer被设置为按blob的长度截断,因此可以用更短的数据覆盖文件

this.writeLocalFile = function(){
        chrome.fileSystem.getWritableEntry(self.localFile, function(writableEntry){
            console.log(writableEntry);
            writableEntry.createWriter(function(writer) {
                writer.onerror = function(){
                    console.log("error");
                }
                writer.onwriteend = function(){
                    console.log("Write ended");
                }
                self.getData();
                blob = new Blob([self.data], {type: 'text/plain'});
                writer.truncate(blob.size);
                //writer.seek(0);
                writer.write(blob);
            }, function(error){
                console.log(error);
            });
        })
    }
问题是,当我用较短的数据覆盖较长的文件时,如果我不使用truncate,多余的数据将被保留,并且我无法在下一次加载时读取有效的json,如果我使用truncate,那么当我查看sublime时,所有额外的空间都是奇怪的空字符

因此,读取的字符串仍然是旧的较长文件的长度,但当我在控制台中登录时,字符串是正确的,我可以复制和粘贴输出,并将其设置为另一个较短长度的变量。但是直接读取的对象仍然是较长的长度,我不知道如何从末尾修剪空字符

例如,如果文件是1200个字符,我删除了一些数据并重新保存,因此json字符串是800个字符,那么文件中的最后400个字符现在为空。在下次加载时重新读取数据时,字符串仍然为1200个字符,最后400个字符为“”


有没有比扫描字符串、检查charCodeAt==0并删除其余内容更好的方法来修复此问题?比如,一种更好的写入文件的方法?

我发现了这个问题,因为我也遇到了这个问题。在做研究时,我相信我们都错误地使用了truncate


我认为这个stackoverflow解释了如何正确使用truncate:

您知道最后一个字符的索引吗…?是的,我只是搜索RegExp('\0'))
weirdstring[900]//""
weirdstring[900] == ""   // false
weirdstring[900] == null // false
weirdstring[900].length // 1
!weirdstring[900] // false
weirdstring.charCodeAt(900) // 0