多个异步文件是否附加在同一个文件上?

时间:2015-03-14 16:40:36

标签: node.js append fs

查看下面的伪代码,是否可能会对文件的写入造成损坏?

for(var i=0;i<5;i++)
  fs.appendFile("myfile.txt", "myline"+i+'\n', somecallback)

fs是found here

我期待的可能性:

myline3
myline4
myline1
myline2
myline0

但是这可能吗?

mylimyline4
ne3
myline1
myline2
myline0

在这种情况下,第二个附加将发生在第一个附加的中间。因为如果发生这种情况,我将不得不手动对写入进行排队。

1 个答案:

答案 0 :(得分:1)

我编写了一个程序来测试它并且无法使它混合使用不同的附加内容。

var fs = require('fs')

var filename = __dirname + '/file.bin'
var bytes_per_buff = parseInt(process.argv[2]) || 4096
var num_buffs = parseInt(process.argv[3]) || 256
var buffs = []

for (var i=0; i<num_buffs; i++) {
    buffs[i] = new Buffer(bytes_per_buff)
    for (var j=0; j<bytes_per_buff; j++) {
        buffs[i][j] = i
    }
}

fs.writeFile(filename, '', ()=>console.log('file created'))
for (var i=0; i<num_buffs; i++) {
    (function(buff_num) { //closure to log buff_num
        fs.appendFile(filename, buffs[buff_num], ()=>console.log(buff_num))
    }(i))
}