马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 文件写入
文件写入是计算机非常常见的操作,下载文件,安装软件,保存程序日志,视频录制等都利用到了
1.1 异步写入
- const fs = require("fs");
- // 写入文件
- fs.writeFile('./sentence.txt', "Hello world", error => {
- if (error) {
- console.log("This is failed");
- return;
- } else {
- console.log("Success");
- }
- });
复制代码 1.2 同步写入
根据代码次序逐行去实验
- fs.writeFileSync('./text.text','输入的文本');
复制代码
1.3 流式写入
流式操作适合处理大文件,避免一次性将文件加载到内存中。
通过写入流对象举行文件的操作处理
- //1. 导入fs
- const fs = require('fs');
- //2. 创建写入流对象
- const ws = fs.createWriteStream('text.txt');
- ws.write("Hello world");
- ws.write("This is my server");
- //3. 关闭通道
- ws.close();
复制代码
2. 文件读取
文件读取的场景多种多样,包括电脑开机,程序运行,编辑器打开文件,播放视频,git检察日志等,检察聊天记录
2.1 异步读取
异步读取传入回调函数,传入错误和数据,实验完对应的文件操作后实验回调函数
- const fs = require("fs");
- fs.readFile("./sentence.txt",(err,data)=>{
- if(err){
- console.log("This is an error");
- return;
- }
- console.log(data.toString());
- });
复制代码 2.2 同步读取
根据代码次序逐行实验
- let data = fs.readFileSync("sentence.txt");
- console.log(data);
复制代码 2.3 流式读取
将文件分块,逐块读取,利用on绑定变乱,调用回调函数,传入参数chunk,意为块,现实上就是原文件分为的块状文件,每一块内存64k
- const rs = fs.createReadStream("video.mp4");
- rs.on('data',chunk=>{console.log(chunk,chunk.length);})
复制代码 end可选变乱,读取完毕后调用回调函数
- rs.on('end',()={console.log("读取完毕");})
复制代码
3. 文件追加
3.1 异步追加
追加方式与写入方式一致,实验函数名不一致
- fs.appendFile('example.txt', '\nNew content added!', (err) => {
- if (err) {
- console.error('Error appending to file:', err);
- return;
- }
- console.log('Content appended successfully!');
- });
复制代码 3.2 同步追加
- try {
- fs.appendFileSync('example.txt', '\nNew content added!');
- console.log('Content appended successfully!');
- } catch (err) {
- console.error('Error appending to file:', err);
- }
复制代码
4. 删除文件
4.1 异步删除
- fs.unlink('example.txt', (err) => {
- if (err) {
- console.error('Error deleting file:', err);
- return;
- }
- console.log('File deleted successfully!');
- });
复制代码 4.2 同步删除
- try {
- fs.unlinkSync('example.txt');
- console.log('File deleted successfully!');
- } catch (err) {
- console.error('Error deleting file:', err);
- }
复制代码
5. 复制文件
5.1 readfile操作
- const fs = require('fs');
- let data = fs.readFileSync('sentence.txt');
- fs.writeFileSync('sentence1.txt',data);
复制代码 5.2 流式操作
- fs = require('fs');
- //流式操作
- const rs = fs.createReadStream("sentence.txt"); //创建流式读取器
- const ws = fs.createWriteStream("sentence3.txt"); //创建流式写入器
- rs.on('data',chunk=>{ws.write(chunk)})
复制代码 5.3 利用管道
流式读取之后通过管道举行流式写入
6. 文件重定名与移动
重定名的利用方法:
- const fs = require('fs');
- fs.rename("name1.txt","name2.txt",err=>{
- if (error) {console.log("This is an error");return}
- console.log("修改成功");
- })
复制代码
7. 文件夹操作
7.1 创建文件夹
不含有sync都默认利用异步方法,文件夹创建函数为mkdir
- const fs = require('fs');
- fs.mkdir('./html',err=>{
- if (err){
- console.log('error');
- return;
- }
- console.log('创建成功')
- })
复制代码 7.2 递归创建
recursive:true表现如果路径中某个文件夹不存在,会递归创建全部必须的文件夹
- const fs = require('fs');
- fs.mkdir('./html/vue',{recursive:true},err=>{
- if (err){
- console.log('error');
- return;
- }
- console.log('创建成功')
- })
复制代码 7.3 读取文件夹
- fs.readdir('../资源',(err,data)=>{
- if (err){console.log("error");return}
- console.log(data) //获取当前文件夹中内容
- })
复制代码 7.4 删除文件夹
- fs.rmdir('../资源',(err)=>{
- if (err){console.log("error");return}
- })
复制代码 7.5 递归删除
- fs.rm('../资源',{recursive:true},(err)=>{
- if (err){console.log("error");return}
- })
复制代码
8. 检察资源状态
8.1 异步获取
- const fs = require('fs');
- fs.stat('./资料',(error,data)=>{
- if (error) {console.log("This is an error");return;}
- console.log(data) //查看相关信息
- })
复制代码 8.2 同步获取
- try {
- const stats = fs.statSync('example.txt');
- console.log('File stats:', stats);
- } catch (err) {
- console.error('Error getting file stats:', err);
- }
复制代码
9. path模块
path模块是Node.js中一个内置模块,用于处理和操作文件路径。它提供了一系列实用方法,能够高效地解析、格式化、拼接和规范化路径。
- const path = require("path")
复制代码 · 获取文件名
获取文件名(包括拓展名)
- const filePath = '/home/user/documents/file.txt';
- console.log(path.basename(filePath)); // 输出: 'file.txt'
- console.log(path.basename(filePath, '.txt')); // 输出: 'file'
复制代码 · 拼接路径
resolve拼接规范的绝对路径
- const path = require("path")
- console.log(path.resolve(__dirname,'./text.txt'));
复制代码 是Node.js提供的全局变量,表现当前模块文件地点的目次路径
- console.log(__dirname);
- // 假设文件位于 /home/user/project/index.js
- // 输出: /home/user/project
复制代码 · 路径分割
path.sep获取操作体系的路径分隔符
· 路径解析
path.parse解析路径并返回对象
- console.log(path.extname(str));
复制代码- const filePath = '/home/user/documents/file.txt';
- console.log(path.parse(filePath));
- /*
- 输出:
- {
- root: '/',
- dir: '/home/user/documents',
- base: 'file.txt',
- ext: '.txt',
- name: 'file'
- }
- */
复制代码 · 路径格式化
格式化为字符串
- const pathObject = {
- root: '/',
- dir: '/home/user/documents',
- base: 'file.txt',
- ext: '.txt',
- name: 'file'
- };
- console.log(path.format(pathObject)); // 输出: '/home/user/documents/file.txt'
复制代码 · 路径目次名
path.dirname获取路径的目次名
- const filePath = '/home/user/documents/file.txt';
- console.log(path.dirname(filePath)); // 输出: '/home/user/documents'
复制代码- console.log(path.dirname(str));
- //输出:所在目录的路径
复制代码 · 文件拓展名
path.extname获取路径的扩展名
- const filePath = '/home/user/documents/file.txt';
- console.log(path.extname(filePath)); // 输出: '.txt'
复制代码- console.log(path.extname(str));
- //eg:输出:js
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |