根据文档,fs.writeFile
的默认行为是截断文件(如果文件已存在)。它对我来说似乎没有这样做,并且可以通过一个非常简单的测试用例来观察。
var fs = require('fs')
var str1 = "aaaaaaaaaa" // start with this string
var str2 = "bbbbbb" // replace it with this string
var str3 = "bbbbbbaaaa" // this is the string which appears with an append
fs.writeFile('test',str1,function(){
fs.writeFile('test',str2,function(){
fs.readFile('test','utf8',function(err,buff){
console.log(buff === str2) // should be true
console.log(buff === str3) // should be false
})
})
})
预期产量:
true
false
实际输出:
false
true
这是在具有节点v0.10.24
的CentOS上发生的。我给出的例子来自另一个SO问题,该答案的作者说他的机器正在给他与我的机器完全相同的代码块。 node.js fs.writeFile Not Completely Overwriting File
答案 0 :(得分:1)
问题是Vagrant winnfs插件中的已知错误。 https://bitbucket.org/jankowfsky/winnfsd/issue/7/winnfsd-doesnt-always-overwrite-files已经提出了与此问题有关的问题。