var fs = require("fs");
function testReadStream(){
// fs 对象继承 流对象stream对象
// 根据路径将文件读取到可读流对象中
var reader = fs.createReadStream("./name.txt");
var result = "";
// 监听每次读取的数据 当文件很大就必须使用可读流
reader.on("data",(chuck)=>{
result += chuck;
// 进度条
// result/总字节数
})
reader.on("error",(err)=>{
if(err){
console.log("读取是发生错误");
}
});
reader.on("end",()=>{
console.log(result.toString());
console.log("读取完成");
});
var writer = fs.createWriteStream("newName.txt");
// pipe 管道 将可读流里面的数据 管道 写入到可写流中
// 管道的好处 当前文件比较大的时候可以分多次进行写入
reader.pipe(writer);
}
//testReadStream();
function testWriteStream(){
var writer = fs.createWriteStream("demo.txt");
var intArray = new Uint8Array([65,66,67,68]);
console.log(intArray);
var buffer = Buffer.from(intArray)
console.log(buffer.toString());
writer.write(buffer,(err)=>{
if(err){
console.log("写入发生错误",err);
}else {
console.log("succes 写入成功");
}
})
}
//testWriteStream();
// 可以实现自定义的文件拷贝方法
// 如果要实现文件夹的拷贝 需要递归实现
// 需要自己创建目录 和文件
function testCopy(src,dest){
var fs = require("fs");
var reader = fs.createReadStream(src);
var writer = fs.createWriteStream(dest);
reader.pipe(writer);
}
//testCopy("./test","./copytest");
function testZip(){
var fs = require("fs");
var zlib = require("zlib");
var reader = fs.createReadStream("demo.txt");
var zlibObj = zlib.createGzip();
// 将读取到的数据 经过中间管道 压缩 然后在写入到可写流中
reader.pipe(zlibObj).pipe(fs.createWriteStream("demo.zip"));
}
//testZip();
function testUnZip(){
//实现解压缩文件
var fs = require("fs");
var zlib = require("zlib");
var reader = fs.createReadStream("demo.zip");
// 解压缩的对象
var unzipObj = zlib.createGunzip();
reader.pipe(unzipObj).pipe(fs.createWriteStream("unzip.txt"));
}
//testUnZip();
网友评论