模式切换
fs 文件系统模块
fs 文件系统模块
Node.js 提供了 fs
(文件系统)模块,用于与文件系统进行交互。它提供了多种用于读取、写入、删除、修改文件和目录的 API。通过 fs
模块,开发者可以进行文件的各种操作。
要使用 fs
模块,可以通过以下方式引入:
javascript
const fs = require('fs');
文件的读取与写入
检查文件是否存在
在 Node.js 中,可以使用 fs.existsSync()
来同步检查文件是否存在。如果文件存在,则返回 true
,否则返回 false
。
同步检查文件是否存在:
javascriptconst fs = require('fs'); if (fs.existsSync('example.txt')) { console.log('文件存在'); } else { console.log('文件不存在'); }
如果需要异步检查文件是否存在,可以使用
fs.access()
方法。异步检查文件是否存在:
javascriptfs.access('example.txt', fs.constants.F_OK, (err) => { if (err) { console.log('文件不存在'); } else { console.log('文件存在'); } });
文件的读取
文件读取可以使用 fs.readFile()
(异步)或 fs.readFileSync()
(同步)方法。
异步读取文件:
javascriptconst fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error('读取文件失败:', err); return; } console.log('文件内容:', data); });
同步读取文件:
javascriptconst fs = require('fs'); try { const data = fs.readFileSync('example.txt', 'utf8'); console.log('文件内容:', data); } catch (err) { console.error('读取文件失败:', err); }
文件的写入
文件写入同样有异步和同步两种方式。fs.writeFile()
和 fs.writeFileSync()
可以用于将数据写入文件。
异步写入文件:
javascriptconst fs = require('fs'); const data = 'Hello, Node.js!'; fs.writeFile('output.txt', data, 'utf8', (err) => { if (err) { console.error('写入文件失败:', err); return; } console.log('文件写入成功'); });
同步写入文件:
javascriptconst fs = require('fs'); const data = 'Hello, Node.js!'; try { fs.writeFileSync('output.txt', data, 'utf8'); console.log('文件写入成功'); } catch (err) { console.error('写入文件失败:', err); }
文件操作时的异常处理
在文件操作过程中,常常需要处理文件读取或写入中的异常。Node.js 的 fs
模块通过回调函数传递错误对象来进行错误处理。
异步操作错误处理:
javascriptconst fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error('文件读取失败:', err.message); return; } console.log('文件内容:', data); });
同步操作错误处理:
javascriptconst fs = require('fs'); try { const data = fs.readFileSync('example.txt', 'utf8'); console.log('文件内容:', data); } catch (err) { console.error('文件读取失败:', err.message); }
文件操作
截断文件
fs.truncate()
用于截断文件,将文件内容缩短到指定的长度。如果文件原本较长,截断后多余的内容会被删除;如果文件较短,文件长度会填充为指定长度。
截断文件:
javascriptconst fs = require('fs'); fs.truncate('output.txt', 5, (err) => { if (err) { console.error('文件截断失败:', err); return; } console.log('文件截断成功'); });
删除文件
使用 fs.unlink()
可以删除指定的文件。请注意,这会永久删除文件,因此请小心使用。
删除文件:
javascriptconst fs = require('fs'); fs.unlink('output.txt', (err) => { if (err) { console.error('删除文件失败:', err); return; } console.log('文件删除成功'); });
复制文件
Node.js 本身没有内置的复制文件方法,但你可以使用 fs.copyFile()
方法来实现文件复制操作。
复制文件:
javascriptconst fs = require('fs'); fs.copyFile('source.txt', 'destination.txt', (err) => { if (err) { console.error('复制文件失败:', err); return; } console.log('文件复制成功'); });
重命名文件
fs.rename()
用于重命名文件或将文件从一个位置移动到另一个位置。
重命名文件:
javascriptconst fs = require('fs'); fs.rename('oldname.txt', 'newname.txt', (err) => { if (err) { console.error('重命名文件失败:', err); return; } console.log('文件重命名成功'); });
目录操作
创建目录
使用 fs.mkdir()
可以创建一个目录。可以通过设置 recursive
参数为 true
来递归创建目录。
创建目录:
javascriptconst fs = require('fs'); fs.mkdir('newdir', { recursive: true }, (err) => { if (err) { console.error('创建目录失败:', err); return; } console.log('目录创建成功'); });
读取目录
fs.readdir()
用于读取指定目录的内容,并返回一个包含目录中所有文件和文件夹名称的数组。
读取目录:
javascriptconst fs = require('fs'); fs.readdir('someDir', (err, files) => { if (err) { console.error('读取目录失败:', err); return; } console.log('目录内容:', files); });
删除目录
使用 fs.rmdir()
可以删除空目录。如果目录不为空,删除操作会失败。你也可以使用 fs.rm()
来删除非空目录。
删除目录:
javascriptconst fs = require('fs'); fs.rmdir('someDir', (err) => { if (err) { console.error('删除目录失败:', err); return; } console.log('目录删除成功'); });
查看目录信息
fs.stat()
可以用来获取文件或目录的详细信息,包括文件大小、创建时间、修改时间等。
查看目录信息:
javascriptconst fs = require('fs'); fs.stat('someDir', (err, stats) => { if (err) { console.error('获取目录信息失败:', err); return; } console.log('目录信息:', stats); });
获取目录的路径
Node.js 本身没有直接获取目录路径的函数,但可以通过 __dirname
来获取当前脚本文件所在的目录路径。
获取目录的路径:
javascriptconsole.log(__dirname); // 输出当前脚本所在的目录路径