nodejs文件读写操作完整版
在Node.js中,文件操作是非常常见的任务,涉及到读取文件、写入文件、创建文件、删除文件等。Node.js提供了几个内置的模块来帮助我们进行这些操作,最常用的两个模块是fs
(文件系统)和path
。
1. 使用fs
模块
fs
模块是Node.js的核心模块,用于处理文件系统的操作。
读取文件
使用fs.readFile()
方法可以异步地读取文件内容。
const fs = require('fs');fs.readFile('example.txt', 'utf8', (err, data) => {if (err) {console.error(err);return;}console.log(data);
});
或者使用fs.promises.readFile()
方法进行Promise风格的读取。
const fs = require('fs').promises;async function readFile() {try {const data = await fs.readFile('example.txt', 'utf8');console.log(data);} catch (err) {console.error(err);}
}readFile();
写入文件
使用fs.writeFile()
方法可以异步地写入文件内容。如果文件不存在,它会被创建。
const fs = require('fs');fs.writeFile('example.txt', 'Hello, Node.js!', (err) => {if (err) {console.error(err);return;}console.log('File has been written.');
});
或者使用fs.promises.writeFile()
方法进行Promise风格的写入。
const fs = require('fs').promises;async function writeFile() {try {await fs.writeFile('example.txt', 'Hello, Node.js!');console.log('File has been written.');} catch (err) {console.error(err);}
}writeFile();
创建文件和目录
使用fs.writeFile()
或fs.mkdir()
可以创建文件或目录。fs.mkdir()
用于创建目录。
const fs = require('fs');
const path = require('path');// 创建文件(如果文件已存在,则覆盖)
fs.writeFile('newfile.txt', 'New content', (err) => { /* ... */ });// 创建目录(递归地创建,如果父目录不存在)
fs.mkdir(path.join(__dirname, 'newdir'), { recursive: true }, (err) => { /* ... */ });
或者使用fs.promises
版本:
const fs = require('fs').promises;
const path = require('path');async function createFileAndDir() {try {await fs.writeFile('newfile.txt', 'New content'); // 创建或覆盖文件await fs.mkdir(path.join(__dirname, 'newdir'), { recursive: true }); // 创建目录(递归)} catch (err) {console.error(err);}
}
2. 使用path
模块处理路径问题
path
模块用于处理文件和目录的路径。这在跨平台开发时特别有用,因为不同的操作系统使用不同的路径分隔符。
const path = require('path');
const filePath = path.join(__dirname, 'example', 'file.txt'); // 跨平台兼容的路径连接方式。例如:在Windows上是'example\file.txt',在Unix系统上是'example/file.txt'。
console.log(filePath); // 输出: /your/current/dir/example/file.txt (或 Windows 上的等效路径)
3. 使用流进行大文件处理(可选)
对于大文件的读写,推荐使用流(Streams),这样可以更有效地管理内存使用。例如,使用
fs.createReadStream()
和fs.createWriteStream()
。 示例略过,请查阅Node.js文档了解详细信息。