赞
踩
fs模块是nodeJS软件自带的全局模块,无需单独下载直接require('fs')即可
const fs = require('fs') // js文件中导入对应fs模块:fs.readFile()|fs.readFileSync() fs.readFile('E:/前端目录/javascript面试demo/node/a.txt', 'utf-8', (err, data) => { if (err) { console.log('err: ', err); return; } console.log('data: ', data); }); ----------------------------------------------------------------------------------------- try { const data = fs.readFileSync('E:/前端目录/javascript面试demo/node/a.txt', 'utf8') console.log(data) } catch (err) { console.error(err) } 备注: fs.readFile() 和 fs.readFileSync() 都会在返回数据之前将文件的全部内容读取到内存中。 这意味着大文件会对内存的消耗和程序执行的速度产生重大的影响。 在这种情况下,更好的选择是使用流来读取文件的内容。
#### 写入文件(文件可以不存在,会自动添加改文件)
// fs.writeFile() './a.txt' 指当前文件目录下的a.txt
console.log(fs.writeFileSync('./a.txt', content, err => {
console.log(err);
}));
// 同步的版本 fs.writeFileSync()
try {
const data = fs.writeFileSync('./a.txt', content)
//文件写入成功。
} catch (err) {
console.error(err)
}
#### 将内容追加到文件内容的末尾
fs.appendFile('./b.txt', content, err => {
if (err) {
console.error(err)
return
}
//完成!
});
备注:
和写入文件(writeFile|writeFileSync)一样如果文件不存在,会创建出来对应文件并写入对应内容!!!
r+ 打开文件用于读写。
w+ 打开文件用于读写,将流定位到文件的开头。如果文件不存在则创建文件。
a 打开文件用于写入,将流定位到文件的末尾。如果文件不存在则创建文件。
a+ 打开文件用于读写,将流定位到文件的末尾。如果文件不存在则创建文件。
主要就是fs.writeFile()里面使用指定标示:(后期要是遇到其他的再来添加)
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => {}) // 一直执行的话,不会覆盖掉原来的文件内容,而是在尾部继续追加内容;
fs.writeFile('/Users/joe/test.txt', content, { flag: 'w+' }, err => {}) // 一直执行的话,会覆盖掉原来的文件内容,和不加flag属性功能一样;
fs.writeFile('/Users/joe/test.txt', content, { flag: 'r+' }, err => {}) // 一直执行的话,会覆盖掉原来的文件内容,和不加flag属性功能一样;
### 存在的话无返回信息;不存在的话err会返回报错信息
console.log(fs.access('./dist', err => {
console.log('err: ', err);
}))
console.log(fs.existsSync('./dist')) // true
#### 直接创建对应目录,如果目录存在会报错。不会覆盖掉!
fs.mkdir('a', err=> {
console.log('err: ', err);
})
try {
if(!fs.existsSync('a')){
fs.mkdirSync('a')
}
} catch (error) {
console.log('error: ', error);
}
#### 直接跟第一个参数路径,返回对应的目录内容
const fs = require('fs')
const path = require('path')
const folderPath = '/Users/joe'
##### 读取相对的目录内容
fs.readdirSync(folderPath)
##### 读取完整的路径下的目录内容
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
})
### 这种写法记得一定要都一个回调函数
fs.rename('a.txt', 'c.txt', err => {
if (err) {
console.log(err);
}
})
fs.renameSync() 是同步的版本:直接就是两个参数,后面不用加回调函数
try {
fs.renameSync('a.txt', 'c.txt')
} catch (err) {
console.error(err)
}
#### 只能删除空的文件夹
fs.rmdir('dist',err => {console.log(err)})
try {
fs.rmdirSync('dist')
} catch(err) {
console.log(err)
}
#### 删除非空的文件夹要安装对应的替代插件(见下文)
执行代码: npm install fs-extra 或 yarn add fs-extra 添加到 dependencies 会添加到生产模式
执行代码:npm install fs-extra 或 yarn add fs-extra
添加到 dependencies 会添加到生产模式
const fs = require('fs-extra');
#### 异步写法:最后要有回调函数
fs.remove('dist',err=> {console.log(err)})
#### 同步写法:可以直接删除文件夹,后面不强制加回调函数
try {fs.removeSync('dist)} catch (err) {console.log(err)}
// 采用promise的形式来删除文件夹,它本身会返回一个promise对象; fs.remove('dist').then((res) => { console.log('res: ', res); }).catch((err) => { console.log('err: ', err); }) // 使用 async/await:成对出现 async function removeFolder(param) { try { await fs.removeSync(param) } catch (error) { console.log(error ); } } removeFolder('dist')
const fs = require('fs')
fs.access(): 检查文件是否存在,以及 Node.js 是否有权限访问。 fs.appendFile(): 追加数据到文件。如果文件不存在,则创建文件。 fs.chmod(): 更改文件(通过传入的文件名指定)的权限。相关方法:fs.lchmod()、fs.fchmod()。 fs.chown(): 更改文件(通过传入的文件名指定)的所有者和群组。相关方法:fs.fchown()、fs.lchown()。 fs.close(): 关闭文件描述符。 fs.copyFile(): 拷贝文件。 fs.createReadStream(): 创建可读的文件流。 fs.createWriteStream(): 创建可写的文件流。 fs.link(): 新建指向文件的硬链接。 fs.mkdir(): 新建文件夹。 fs.mkdtemp(): 创建临时目录。 fs.open(): 设置文件模式。 fs.readdir(): 读取目录的内容。 fs.readFile(): 读取文件的内容。相关方法:fs.read()。 fs.readlink(): 读取符号链接的值。 fs.realpath(): 将相对的文件路径指针(.、..)解析为完整的路径。 fs.rename(): 重命名文件或文件夹。 fs.rmdir(): 删除文件夹。 fs.stat(): 返回文件(通过传入的文件名指定)的状态。相关方法:fs.fstat()、fs.lstat()。 fs.symlink(): 新建文件的符号链接。 fs.truncate(): 将传递的文件名标识的文件截断为指定的长度。相关方法:fs.ftruncate()。 fs.unlink(): 删除文件或符号链接。 fs.unwatchFile(): 停止监视文件上的更改。 fs.utimes(): 更改文件(通过传入的文件名指定)的时间戳。相关方法:fs.futimes()。 fs.watchFile(): 开始监视文件上的更改。相关方法:fs.watch()。 fs.writeFile(): 将数据写入文件。相关方法:fs.write()。 关于 fs 模块的特殊之处是,所有的方法默认情况下都是异步的,但是通过在前面加上 Sync 也可以同步地工作。 例如: fs.rename() fs.renameSync() fs.write() fs.writeSync() 这在应用程序流程中会产生巨大的差异。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。