我一直在尝试在使用Node.js时写入文件,但没有成功。我该怎么做?
当前回答
您可以通过以下代码示例写入文件:
var data = [{ 'test': '123', 'test2': 'Lorem Ipsem ' }];
fs.open(datapath + '/data/topplayers.json', 'wx', function (error, fileDescriptor) {
if (!error && fileDescriptor) {
var stringData = JSON.stringify(data);
fs.writeFile(fileDescriptor, stringData, function (error) {
if (!error) {
fs.close(fileDescriptor, function (error) {
if (!error) {
callback(false);
} else {
callback('Error in close file');
}
});
} else {
callback('Error in writing file.');
}
});
}
});
其他回答
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');
})
});
});
文件系统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!');
您可以通过以下代码示例写入文件:
var data = [{ 'test': '123', 'test2': 'Lorem Ipsem ' }];
fs.open(datapath + '/data/topplayers.json', 'wx', function (error, fileDescriptor) {
if (!error && fileDescriptor) {
var stringData = JSON.stringify(data);
fs.writeFile(fileDescriptor, stringData, function (error) {
if (!error) {
fs.close(fileDescriptor, function (error) {
if (!error) {
callback(false);
} else {
callback('Error in close file');
}
});
} else {
callback('Error in writing file.');
}
});
}
});
您可以使用库简易文件管理器
首先从npm安装npm安装简易文件管理器
上载和删除文件的示例
var filemanager = require('easy-file-manager')
var path = "/public"
var filename = "test.jpg"
var data; // buffered image
filemanager.upload(path,filename,data,function(err){
if (err) console.log(err);
});
filemanager.remove(path,"aa,filename,function(isSuccess){
if (err) console.log(err);
});
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');