1. 读取文件
在Node.js中,使用fs模块可以进行文件操作。其中,读取文件的函数是fs.readFile()。这个函数有三个参数:文件路径、编码格式和回调函数。
下面是一个读取文本文件的例子:
const fs = require('fs');
fs.readFile('/path/to/file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
首先,我们要用require()函数引入fs模块。然后,使用fs.readFile()函数读取文件,将读取到的内容输出到控制台上。
需要注意的是,回调函数中的err变量表示读取文件是否出错,如果出错则不为空。data变量表示读取到的文件内容。
1.1 读取二进制文件
如果是读取二进制文件,那么需要省略第二个参数,如下:
const fs = require('fs');
fs.readFile('/path/to/image.jpg', (err, data) => {
if (err) throw err;
console.log(data);
});
这里 readFile() 函数不传入第二个参数,读取到的 data 变量类型是一个Buffer,可以使用该Buffer对象进行上传或者是写入其他文件等操作。
2. 写入文件
Node.js使用fs.writeFile()函数来写入文件,该函数需要三个参数:文件路径、内容和回调函数。
下面是一个将内容写入文件的例子:
const fs = require('fs');
fs.writeFile('/path/to/file.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('The file has been saved!');
});
这里,我们将“Hello Node.js”写入文件中。当文件写入完成时,控制台将输出“The file has been saved!”。
需要注意的是,如果文件路径不存在或无法打开,则这个函数会抛出异常。如果写入成功,则不会返回任何东西。
2.1 写入CSV文件
在写入CSV文件时,我们通常需要将数据按照特定的格式写入到文件中。下面是一个写入CSV文件的例子:
const fs = require('fs');
const data = [
['name', 'age', 'gender'],
['Alice', '20', 'female'],
['Bob', '25', 'male'],
['Charlie', '30', 'male']
];
const csv = data.map(row => row.join(',')).join('\n');
fs.writeFile('/path/to/file.csv', csv, (err) => {
if (err) throw err;
console.log('The CSV file has been saved!');
});
这里我们定义了一个包含四行数据的二维数组 data,将它转换成了逗号分隔的 CSV 字符串,然后使用 fs.writeFile() 保存到文件中。
3. 追加内容到文件
Node.js使用fs.appendFile()函数将内容附加到文件中。它的参数与fs.writeFile()函数相同。
下面是一个将内容追加到文件中的例子:
const fs = require('fs');
fs.appendFile('/path/to/file.txt', 'This is some new text.', (err) => {
if (err) throw err;
console.log('The new content was appended to the file!');
});
需要注意的是,如果文件不存在,它将由于指定的文件夹不存在而引发错误。
3.1 追加JSON格式数据到文件
在将 JSON 数据追加到文件中时,我们需要将数据字符串化并添加在已有的 JSON 数据后面。下面是一个追加 JSON 数据到文件中的例子:
const fs = require('fs');
const data = {
name: 'Alice',
age: 20,
gender: 'female'
};
fs.readFile('/path/to/data.json', (err, fileData) => {
if (err) throw err;
const dataArr = JSON.parse(fileData);
dataArr.push(data);
fs.writeFile('/path/to/data.json', JSON.stringify(dataArr), (err) => {
if (err) throw err;
console.log('The JSON data has been appended to the file!');
});
});
这里,我们首先读取了一个包含JSON格式数据的文件。然后,将新数据添加到JSON数据后面,并使用fs.writeFile()将数据字符串写入文件。
需要注意的是,我们要使用JSON.parse()将读取到的文件解析为JSON对象。在追加新数据之前,我们需要确保读取到的是一个JSON数组(即JSON.parse()解析后的结果是一个数组)。