我一直在尝试在使用Node.js时写入文件,但没有成功。我该怎么做?


当前回答

好的,这很简单,因为Node有内置的功能,它叫做fs,代表文件系统,基本上,NodeJS文件系统模块。。。

因此,首先需要在server.js文件中使用它,如下所示:

var fs = require('fs');

fs有几种方法可以写入文件,但我的首选方法是使用appendFile,这将把内容附加到文件中,如果文件不存在,将创建一个,代码如下:

fs.appendFile('myFile.txt', 'Hi Ali!', function (err) {
  if (err) throw err;
  console.log('Thanks, It\'s saved to the file!');
});

其他回答

我知道关于“写”的问题,但在更一般的意义上,“附加”在某些情况下可能有用,因为它很容易在循环中使用,以便向文件中添加文本(无论文件是否存在)。如果要添加行,请使用“\n”,例如:

var fs = require('fs');
for (var i=0; i<10; i++){
    fs.appendFileSync("junk.csv", "Line:"+i+"\n");
}

你当然可以让它更高级一点。非阻塞、写入位和段,而不是一次写入整个文件:

var fs = require('fs');
var stream = fs.createWriteStream("my_file.txt");
stream.once('open', function(fd) {
  stream.write("My first row\n");
  stream.write("My second row\n");
  stream.end();
});

提供的答案已注明日期,更新的方法是:

const fsPromises = require('fs').promises
await fsPromises.writeFile('/path/to/file.txt', 'data to write')

有关详细信息,请参阅此处的文档

我喜欢的索引/文章/文件系统。

这对我有用。

另请参阅如何在node.js中写入文件?。

fs = require('fs');
fs.writeFile('helloworld.txt', 'Hello World!', function (err) {
    if (err) 
        return console.log(err);
    console.log('Wrote Hello World in file helloworld.txt, just check it');
});

helloworld.txt的内容:

Hello World!

更新:就像在当前目录中写入Linux节点一样,在其他一些目录中似乎没有,所以我添加了这条注释,以防万一:使用此ROOT_APP_PATH=fs.realpathSync('.');console.log(ROOT_APP_PATH);以获取文件的写入位置。

同步写入

fs.writeFileSync(文件,数据[,选项])

fs = require('fs');

fs.writeFileSync("foo.txt", "bar");

异步写入

fs.writeFile(文件,数据[,选项],回调)

fs = require('fs');

fs.writeFile('foo.txt', 'bar', (err) => { if (err) throw err; });

哪里

file <string> | <Buffer> | <URL> | <integer> filename or file descriptor
data <string> | <Buffer> | <Uint8Array>
options <Object> | <string>
callback <Function>

值得阅读官方文件系统(fs)文档。

更新:async/await

fs = require('fs');
util = require('util');
writeFile = util.promisify(fs.writeFile);

fn = async () => { await writeFile('foo.txt', 'bar'); }

fn()