作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Chrome 打包应用程序中使用了文件编写器来保存 json 字符串。我遵循了示例,其中编写器设置为按 blob 的长度 chop ,因此可以用较短的数据覆盖文件。
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);
});
})
}
问题是,当我用较短的数据覆盖较长的文件时,如果我不使用 chop ,则会留下额外的数据,并且我无法在下次加载时读取有效的 json,如果我使用 chop ,则所有额外的空间当我在 sublime 中查看时,空字符很奇怪
因此,读取的字符串仍然是旧的较长文件的长度,但是当我将其登录到控制台时,该字符串是正确的,我可以复制并粘贴输出并将其设置为另一个较短长度的变量。但直接读取的对象仍然是较长的长度,我不知道如何从末尾 trim 空字符
例如,如果文件有 1200 个字符,我删除了一些数据并重新保存,因此 json 字符串为 800 个字符,则文件中的最后 400 个字符现在为空。当我下次加载时重新读取数据时,字符串仍然是 1200 个字符,最后 400 个是“”
weirdstring[900]//""
weirdstring[900] == "" // false
weirdstring[900] == null // false
weirdstring[900].length // 1
!weirdstring[900] // false
weirdstring.charCodeAt(900) // 0
有没有比扫描字符串、检查 charCodeAt==0 并删除其余部分更好的方法来解决此问题?比如,更好的写入文件的方法?
最佳答案
我发现这个是因为我也遇到了这个问题。在进行研究时,我相信我们都错误地使用了 chop 。
我认为这个 stackoverflow 解释了如何正确使用 chop :overwrite a file with HTML5 FileWriter
关于使用 chrome 文件系统写入时,Javascript 字符串中存在 NULL 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17803788/
我是一名优秀的程序员,十分优秀!