文件系统(File system)
Buffer(缓冲区)
var str="hello 菜鸟";
var buf=Buffer.from(str);
console.log(buf);//<Buffer 68 65 6c 6c 6f 20 e8 8f 9c e9 b8 9f>
console.log(buf.length);//12
console.log(str.length);//8/*创建指定长度的buffer,alloc和allocUnsafe两者都是创建指定大小的Buffer,两者的区别在于:alloc创建指定大小的buffer时,会将buffer中的数据全部初始化为00allocUnsafe创建指定大小的buffer时,会含有一些敏感字符*/
var buf=Buffer.alloc(10);
console.log(buf);//<Buffer 00 00 00 00 00 00 00 00 00 00>
buf[0]=66;
console.log(buf);//<Buffer 42 00 00 00 00 00 00 00 00 00>var buf=Buffer.allocUnsafe(10);
console.log(buf);//<Buffer 21 e1 48 9f 17 00 00 00 00 00>
buf[0]=66;
console.log(buf);//<Buffer 42 e1 48 9f 17 00 00 00 00 00>
提示:以下是本篇文章正文内容,下面案例可供参考
同步和异步调用 fs模块中所有的操作都有两种形式可供选择 同步和异步。
同步写入文件fs.openSync(path[, flags, mode])path <string> | <Buffer> | <URL>flags <string> | <number> 默认值: 'r'"r" 只读的"w" 可写的mode <string> | <integer> 默认值: 0o666 设置文件的操作权限,一般不写fs.writeSync(fd, string[, position[, encoding]])fd <integer> 传递要写入文件的描述符string <string> 要写入文件的内容position <integer>encoding <string>返回: <number> 写入的字节数。fs.closeSync(fd)fd <integer> 传递要关闭文件的描述符
var fs=require("fs");
var fd=fs.openSync(","w");
fs.writeSync(fd,"你是个傻子");
fs.closeSync(fd);
var fs=require("fs");
fs.open(","w",function (err,fd){if(!err){fs.write(fd,"这是第一个异步写入的内容",function (err){if (!err){fs.close(fd,function (err){if(!err){console.log("文件已关闭");}else{consloe.log(err);}});}else {console.log(err);}});}else{console.log(err);}
});
简单文件的写入flag:决定文件的访问方式r 只读r+ 读写w 写入r+和w两种方式都可以像文件中写入内容,区别在于:r+只能像已存在的文件中写入内容,若该文件还没有创建则报错w可以像任何文件中写入文件,若该文件不存在则创建该文件a 追加
var fs=require("fs");
fs.writeFile(","这是writeFile写入的内容",{flag:"r+"},function (err){if(!err){console.log("写入成功!!!");}else{console.log(err);}
})
同步、异步、简单文件写入都不适合大文件的写入,性能较差,容易导致内存溢出
var fs=require("fs");
/*fs.createWriteStream(path,options);path 文件路径options 配置的参数*///创建一个可写流
var wsateWriteStream(");
/*可以通过监听流的打开和关闭on(事件字符串,回调函数)绑定一个长期的事件once(事件字符串,回调函数)可以为对象绑定一次性的事件,事件执行一次之后就自动关闭了*/ws.once("open",function (){console.log("我打开了");
})ws.once("close",function (){console.log("我关闭了");
})ws.write("这是流式文件写入的内容");
ws.write("nihao a");
ws.write("沃什胡斯");
ws.write("这、内容");
ws.write("的内容");
ws.write("容");
ws.write("内容");ws.close();
简单文件读取fs.readFile(path[, options], callback)path 文件的路径options 读取的选项callback 回调函数
var fs=require("fs");
fs.readFile("1.jpg",function (err,data){if(!err){fs.writeFile("hello.jpg",data,function (err) {if(!err){console.log("文件写入成功!!!");}})}else {console.log(err);}
})
var fs=require("fs");
//创建一个可读流
var rsateReadStream(");
//创建一个可写流
var wsateWriteStream(");
rs.once("open",function (){console.log("可读流打开————");
})
rs.once("close",function (){console.log("可读流关闭————");
})
ws.once("open",function (){console.log("可写流打开————");
})
ws.once("close",function (){console.log("可写流关闭————");
})
//如果要读取一个可读流中的数据,就必须为可读流绑定一个data事件,data事件绑定完毕,他会自动开始读取数据
rs.once("data",function (data) {//将读取到的数据写入到可写流中ws.write(data,function (err) {ws.close();})
})
pipe()可以直接将可读流的内容输出到可写流中
rs.pipe(ws);
验证路径是否存在- fs.exists(path , callback)- fs.existsSync(path)获取文件状态信息- fs.stat(path,callback)- fs.statSync(path)删除文件- fs.unlink(path, callback)- fs.unlinkSync(path)列出文件- fs.readdir(path[,options], callback)- fs.readdirSync(path[,options])截断文件- fs.truncate(path, len, callback)- fs.truncateSync(path, len)建立目录- fs.mkdir(path[,mode], callback)- fs.mkdirSync(path[, mode])删除目录- fs.rmdir(path, callback)- fs.rmdirSync(path)重命名文件和目录,功能相当于我们常用的Ctrl+ame(oldPath, newPath, callback)- fs.renameSync(oldPath,newPath)监视文件更改写入- fs.watchFile(filename[,options],listener)
var fs=require("fs");console.istsSync("));//trueconsole.log(fs.statSync("));fs.unlinkSync(");console.addirSync("."));//返回当前路径下的文件名fs.truncateSync(",10);//将文件中的内容截断为10个字节fs.mkdirSync("a");fs.rmdirSync("a");fs.renameSync(",");
console.istsSync("));//falsefs.watchFile(",{interval:1000},function (cur,pre) {console.log("修改前文件大小"+pre.size);console.log("修改后文件大小"+cur.size);
})
本文发布于:2024-02-04 22:57:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170718297060499.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |