fs 模块是 Node.js 中的核心模块之一,提供了对文件系统的异步和同步操作接口。使用 fs 模块,开发者可以执行文件的读、写、删除、重命名、修改权限等操作。
主要功能
文件读写操作
fs.readFile():异步读取文件的内容。
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
fs.readFileSync():同步读取文件内容。
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
fs.writeFile():异步写入文件。
fs.writeFile('example.txt', 'Hello, World!', (err) => {
if (err) throw err;
console.log('文件已保存');
});
fs.writeFileSync():同步写入文件。
fs.writeFileSync('example.txt', 'Hello, World!');
fs.appendFile():将数据追加到文件的末尾。
fs.appendFile('example.txt', 'Hello, again!', (err) => {
if (err) throw err;
console.log('数据已追加');
});
文件流操作
fs.createReadStream():创建一个可读流,可以用于逐块读取文件。
const readStream = fs.createReadStream('example.txt', 'utf8');
readStream.on('data', (chunk) => {
console.log(chunk);
});
fs.createWriteStream():创建一个可写流,可以用于逐块写入文件。
const writeStream = fs.createWriteStream('example.txt');
writeStream.write('Hello, World!');
writeStream.end();
文件夹操作
fs.mkdir():异步创建目录。
fs.mkdir('exampleDir', (err) => {
if (err) throw err;
console.log('目录已创建');
});
fs.mkdirSync():同步创建目录。
fs.mkdirSync('exampleDir');
fs.readdir():读取目录内容(异步)。
fs.readdir('exampleDir', (err, files) => {
if (err) throw err;
console.log(files);
});
fs.readdirSync():读取目录内容(同步)。
const files = fs.readdirSync('exampleDir');
console.log(files);
fs.rmdir():异步删除目录。
fs.rmdir('exampleDir', (err) => {
if (err) throw err;
console.log('目录已删除');
});
fs.rmdirSync():同步删除目录。
fs.rmdirSync('exampleDir');
文件和目录删除
fs.unlink():异步删除文件。
fs.unlink('example.txt', (err) => {
if (err) throw err;
console.log('文件已删除');
});
fs.unlinkSync():同步删除文件。
fs.unlinkSync('example.txt');
文件路径操作
fs.rename():异步重命名或移动文件。
fs.rename('oldName.txt', 'newName.txt', (err) => {
if (err) throw err;
console.log('文件已重命名');
});
fs.renameSync():同步重命名或移动文件。
fs.renameSync('oldName.txt', 'newName.txt');
3. 文件权限和状态操作
fs.stat():获取文件的状态信息(异步)。
fs.stat('example.txt', (err, stats) => {
if (err) throw err;
console.log(stats);
});
fs.statSync():获取文件的状态信息(同步)。
const stats = fs.statSync('example.txt');
console.log(stats);
fs.chmod():更改文件权限(异步)。
fs.chmod('example.txt', 0o755, (err) => {
if (err) throw err;
console.log('文件权限已更改');
});
fs.chmodSync():更改文件权限(同步)。
fs.chmodSync('example.txt', 0o755);
fs.chown():更改文件的所有者和所属组(异步)。
fs.chown('example.txt', 1001, 1001, (err) => {
if (err) throw err;
console.log('文件所有者已更改');
});
fs.chownSync():更改文件的所有者和所属组(同步)。
fs.chownSync('example.txt', 1001, 1001);