持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
读取文件
const fs = require('fs');
// 异步读取
fs.readFile('node.txt',(err,data)=>{
if(err) throw err
console.log(data);//<Buffer 68 65 6c 6c 6f 20 6e ...more bytes>
})
// 同步读取
let data = fs.readFileSync('node.txt',{encoding:'utf-8'})
console.log(data);//hello node hello node hello node hello node
如果文件大小有上百MB,需要使用流stream的方法读取文件,readFile是异步的,而readFileSync是同步读取的
写入文件
//fs.writeFile('文件','写入的内容',{flag:‘权限’,编码格式})
fs.writeFile("node1.txt","hello node1",{flag:"a",encoding:"utf-8"},(err)=>{
if(err){
console.log(err);
return
}
console.log("666");
})
| r | 以读取模式打开文件。如果文件不存在抛出异常。 |
|---|---|
| r+ | 以读写模式打开文件。如果文件不存在抛出异常。 |
| rs | 以同步的方式读取文件。 |
| rs+ | 以同步的方式读取和写入文件。 |
| w | 以写入模式打开文件,如果文件不存在则创建。 |
| wx | 类似 'w',但是如果文件路径存在,则文件写入失败。 |
| w+ | 以读写模式打开文件,如果文件不存在则创建。 |
| wx+ | 类似 'w+', 但是如果文件路径存在,则文件读写失败。 |
| a | 以追加模式打开文件,如果文件不存在则创建。 |
| ax | 类似 'a', 但是如果文件路径存在,则文件追加失败。 |
| a+ | 以读取追加模式打开文件,如果文件不存在则创建。 |
| ax+ | 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。 |
获取文件状态
可以在调用open read write方法前进行判断文件是否存在,res会输出文件的信息
fs.stat('node.txt',(err,res)=>{
if(err) throw err
console.log(res);//<Buffer 68 65 6c 6c 6f 20 6e ...more bytes>
})
获取目录所有文件夹
首先在文件夹中建立几个测试的文件,让我们来看下通过相对路径获取一下我文件夹下面的所有文件名,这里总共有几个文件和一个文件夹,循环的时候我们判断我们的子文件是不是文件夹,如果是文件夹的话就执行递归继续变成一个文件夹继续往下递归,通过这个方式来获取我们一个文件夹下面的所有文件
这里总共涉及到俩个api,一个是readir是获取目录下的所有文件名,一个是isDirectory判断是否是文件夹,
function getAllName(path){
fs.readdir(path,function(err,res){
for(let subPath of res){
// 使用同步方法
let statObj = fs.statSync(path+"/"+subPath)
if(statObj.isDirectory()){
getAllName(path+"/"+subPath)
}else{
console.log('File:',subPath);
}
}
})
}
getAllName('../node练习')
// File: fs.js
// File: node.txt
// File: node1.txt
// File: package-lock.json
// File: test.js
// File: test1.js
// File: test.2js
// File: test1.js