44 文件系统/模块
44 文件系统/模块
一、文件系统/模块
在Nodejs中可以通过内置的fs模块来操作系统文件。
同步风格的特点:阻塞代码,同步是用等号赋值的拿结果。
异步风格的特点:不阻塞,但是需要用回调函数拿结果。
注意:同步方法和异步方法的参数是一致的。异步是必须加回调,否则报错。
回调函数的第1个参数永远是错误信息,如果没有错,则返回null。
而如果有返回结果,往往都是回调函数的第2个参数。
fileSystem:fs
0.在node中的同步和异步风格
同步:
1.引入模块
const fs = require('fs')
2.使用同步风格
let result = fs.readFileSync( 路径 )
异步:
1.引入模块
const fs = require('fs')
2.使用异步风格
fs.readFile( 路径,callback )
1.文件操作
1.0关于捕获同步的错误信息
//捕获同步错误。
try {
//把觉得会有错误的代码放在 try中
let result = fs.statSync('./test/demo.txt')
} catch (error) {
console.log( error );
}
console.log( 3333 );
异步不用try...catch,回调的第1个参数就是错误捕获。
1.1 文件信息 fs.stat
功能:检查文件是否存在、文件基本信息、检查是目录/文件
代码示例:
size:17,大小
atime: 2021-03-19T07:07:42.664Z, access 访问
mtime: 2021-03-19T07:07:47.176Z, modify 修改
ctime: 2021-03-19T07:07:47.176Z, create 创建
const fs = require('fs')
let stats = fs.statSync('./test/a.txt')
//返回一个对象
// console.log( stats );
// isFile() //是否是文件
// isDirectory() //是否是目录
console.log( stats.isFile() ) //true
console.log( stats.isDirectory() ) //false
1.2 写入文件
http://nodejs.cn/api/fs.html#fs_file_system_flags
'a'
: 打开文件用于追加。 如果文件不存在,则创建该文件。
'w'
: 打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则删除文件。
代码示例:
const fs = require('fs')
//需求:往test/b.txt中写入hello
//fs.writeFile( 路径,写入的内容,[option],callback ) / writeFileSync(路径,写入的内容,[option],)
//option:{ flag:'a' } append 默认flag为w:write
//写入操作,只要不报错就代表写入成功。
// 如果没有文件,则创建文件
// 默认会覆盖原内容
// fs.writeFile( './test/b.txt','node.js真强大',( err1,res )=>{
// console.log( err1,'我是err1' );
// console.log( res,'我一定是个undefined' );
// } )
fs.writeFile( './test/b.txt','猪八戒',{ flag:'a' },( err1,res )=>{
console.log( err1,'我是err1' );
console.log( res,'我一定是个undefined' );
} )
换行操作:
\r\n :代表换行
fs.writeFile( './test/b.txt','猪八戒\r\n',{ flag:'a' },( err1,res )=>{
console.log( err1,'我是err1' );
console.log( res,'我一定是个undefined' );
} )
1.3 读取文件
代码示例:
//1. 引入fs模块
const fs = require('fs')
//2. 使用fs模块中的读取方法
//2.1 同步方法
// let result = fs.readFileSync( './test/a.txt' )
// console.log( result.toString() );
//2.2 异步方法
let r = fs.readFile( './test/a.txt','utf8',function(err,res){//
// console.log( res.toString() ,'我是结果');
console.log( res,'--------' );
console.log( err,'没有错,则为null' );
} )
console.log( r,'我是undefined,异步方法没有返回值' );
1.4 修改文件名称、可以操作文件名称
fs.renameSync( 完整的源路径,新的路径名称 )
间接地实现生重命名和剪切
代码示例:
const fs = require('fs')
//
// let result = fs.renameSync('./test/a11.txt','./test/a111.txt')
//剪切操作
let result = fs.renameSync('./test/a11.txt','./test2/a11.txt')
console.log( result,'没有返回值则代表执行成功' );
//修改文件夹名称
fs.renameSync('./test2','test22')
1.5 删除文件
fs.unlinkSync( 文件路径 )
代码示例:
const fs = require('fs')
fs.unlinkSync( 'test/demo.js' )
文件的删除、创建、写入、读取等等操作。只局限于服务器上的文件 。
2.文件夹操作
2.1创建目录
fs.mkdir( '目录地址' )
代码案例:
fs.mkdirSync('./test3')
2.2读取目录
fs.readdir( '目录地址' )
代码案例:
let files = fs.readdirSync('./test') //以一个数组结构返回。
console.log( files );
递归在控制台输入 每一个文件夹中的文件
2.3删除目录
fs.rmdir( '目录地址' )
代码案例:
fs.rmdirSync('./test3')