file 是一个文件描述符时,行为几乎与直接调用 fs.write() 类似:

    1. fs.write(fd, Buffer.from(data, options.encoding), callback);

    与直接调用 fs.write() 的区别在于,在某些异常情况下,fs.write() 可能只写入部分 buffer,需要重试以写入剩余的数据,而 fs.writeFile() 将会重试直到数据完全写入(或发生错误)。

    这种影响是混淆的常见原因。 在文件描述符的情况下,文件不会被替换! 数据不一定写入到文件的开头,文件的原始数据可以保留在新写入的数据之前和/或之后。

    例如,如果连续两次调用 fs.writeFile(),首先写入字符串 'Hello',然后写入字符串 ', World',则该文件将会包含 'Hello, World',并且可能包含文件的一些原始数据(取决于原始文件的大小和文件描述符的位置)。 如果使用了文件名而不是描述符,则该文件将会保证仅包含 ', World'