file system 可以在服务端读取文件和数据 方法是同步 + 异步共存
同步方法易使用 (刚开始运行 )
异步方法不会阻塞主线程 (运行起来后用异步)
let fs = require('fs');
let path = require('path');
// 读取文件 文件不存在会报错
// 写入文件 文件不存在会创建文件
fs.readFile('./note.md',function(err,data){
if(err){
console.log(err)
}
fs.writeFile('./note.md1',data,function(){
})
});
64k以下的读写可以用上面这种方式
不适合大文件来使用,否则可能会导致内存的浪费
可以读取一点 写入一点
手动按照自己来读取 fs.open fs.read fs.write fs.close
r 读取
w 写入
r+ 在读的基础上可以写 但是文件不存在会报错
w+ 在写的基础上读取 如果文件不存在 会创建
const fs = require("fs");
// 读取一点 写一点,不会导致淹没可用内存
const SIZE = 5;
let buffer = Buffer.alloc(SIZE);
fs.open("./note.md", "r", function(err, rfd) {
// number
fs.open("./copy.md", "w", function(err, wfd) {
let readOffset = 0;
let writeOffset = 0;
// co
function next() {
fs.read(rfd, buffer, 0, SIZE, readOffset, function(err, bytesRead) {
if(bytesRead === 0){
fs.close(wfd,()=>{})
return fs.close(rfd,()=>{});
}
fs.write(wfd, buffer, 0, bytesRead, writeOffset, function() {
readOffset += bytesRead;
writeOffset += bytesRead;
next();
});
});
}
next();
});
});
// 两个耦合性比较高的代码怎么拆分, 发布订阅/stream
//写入时 没有会创建 如果有会清空
fs.appendFileSync('1.js','123')
// 如果文件已经存在 会将文件中的内容清空
fs.writeFileSync('1.js','123',{flag:'a'});
网友评论