我一直在尝试在使用Node.js时写入文件,但没有成功。我该怎么做?
当前回答
文件系统API中有很多细节。最常见的方法是:
const fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
// Or
fs.writeFileSync('/tmp/test-sync', 'Hey there!');
其他回答
在这里,我们使用w+来读取/写入这两个操作,如果找不到文件路径,那么它将自动创建。
fs.open(path, 'w+', function(err, data) {
if (err) {
console.log("ERROR !! " + err);
} else {
fs.write(data, 'content', 0, 'content length', null, function(err) {
if (err)
console.log("ERROR !! " + err);
fs.close(data, function() {
console.log('written success');
})
});
}
});
内容是指您必须写入文件的内容及其长度“Content.length”。
var path = 'public/uploads/file.txt',
buffer = new Buffer("some content\n");
fs.open(path, 'w', function(err, fd) {
if (err) {
throw 'error opening file: ' + err;
}
fs.write(fd, buffer, 0, buffer.length, null, function(err) {
if (err) throw 'error writing file: ' + err;
fs.close(fd, function() {
console.log('file written');
})
});
});
fs.createWriteStream(路径[,选项])选项还可以包括开始选项,以允许在文件开头之后的某个位置写入数据。修改文件而不是替换文件可能需要r+标志模式而不是默认模式w。编码可以是Buffer接受的任何一种。如果autoClose在“error”或“finish”时设置为true(默认行为),文件描述符将自动关闭。如果autoClose为false,则即使出现错误,也不会关闭文件描述符。应用程序负责关闭它并确保没有文件描述符泄漏。与ReadStream一样,如果指定了fd,WriteStream将忽略路径参数并使用指定的文件描述符。这意味着不会发出“打开”事件。fd应该是阻塞的;应将非阻塞fds传递给net.Socket。如果options是字符串,则它指定编码。
看完这篇长文。你应该了解它的工作原理。因此,这里有一个createWriteStream()的示例。
/* The fs.createWriteStream() returns an (WritableStream {aka} internal.Writeable) and we want the encoding as 'utf'-8 */
/* The WriteableStream has the method write() */
fs.createWriteStream('out.txt', 'utf-8')
.write('hello world');
同步写入
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()
var fs = require('fs');
fs.writeFile(path + "\\message.txt", "Hello", function(err){
if (err) throw err;
console.log("success");
});
例如:读取文件并写入另一个文件:
var fs = require('fs');
var path = process.cwd();
fs.readFile(path+"\\from.txt",function(err,data)
{
if(err)
console.log(err)
else
{
fs.writeFile(path+"\\to.text",function(erro){
if(erro)
console.log("error : "+erro);
else
console.log("success");
});
}
});
推荐文章
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 很好的初学者教程socket.io?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我如何等待一个承诺完成之前返回一个函数的变量?
- CALL_AND_RETRY_LAST分配失败-进程内存不足
- 在JavaScript中根据键值查找和删除数组中的对象
- 使嵌套JavaScript对象平放/不平放的最快方法
- 在Ubuntu上安装Node.js
- 如何以及为什么'a'['toUpperCase']()在JavaScript工作?