1、读取文件:一下子读取整个文件
const fs = require('fs');
fs.readFile('F:\\xpbp\\kcbp2.81_win32_gx\\bin\\log\\user\\20191111\\User_data0.log', function(err, data){
if(err){
console.log(err);
}
console.log(data.toString());
})
2、读取文件:缓冲区读取
如果文件过大,使用以上方法会一下子将文件所有内容读取到内存中,可能会导致内存不足,所以大文件应该使用buffer缓冲区一点一点的读取,避免内存不足导致的错误
const fs = require('fs');
const filePath = 'F:\\xpbp\\kcbp2.81_win32_gx\\bin\\log\\user\\20191111\\User_data0.log';
const buf = new Buffer.alloc(1024);
fs.open(filePath, 'r+', function(err, fd){
if(err){
console.log(err);
}
let len = 0;
readFile(fd, buf);
})
function readFile(fd, buf){
fs.read(fd, buf, 0, buf.length, null, function(err, bytes){
if(err){
console.log(err);
}
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
readFile(fd, buf);
}
})
}
3、使用模块readline一行一行的读取文件
const fs = require('fs');
const readline = require('readline');
const filePath = 'F:\\xpbp\\kcbp2.81_win32_gx\\bin\\log\\user\\20191111\\User_data0.log';
const readliner = readline.createInterface({
input: fs.createReadStream(filePath),
});
readliner.on('line', function(line){
console.log(line)
});
readliner.on('close', function(){
console.log('file close!');
});
4、写入文件:一次性写入
const fs = require('fs');
const filePath = 'C:\\Users\\Lange\\Desktop\\test.txt';
const content = '把我写入文件中可好';
fs.writeFile(filePath, content, function(err){
if(err){
console.log(err)
}
console.log('写入完成');
});
5、通过文件描述符写入
const fs = require('fs');
const filePath = 'C:\\Users\\Lange\\Desktop\\test.txt';
const arr = [
'唐僧', '孙悟空', '猪八戒', '沙僧', '白龙马'
]
fs.open(filePath, 'r+', function(err, fd){
if(err){
console.log(err);
}
for(let i in arr){
console.log(arr[i]);
fs.write(fd, arr[i], 'utf8', function(err){
});
}
})
6、此外还有创建目录、删除目录、列表文件目录、文件重命名等操作