44 文件系统/模块

 

44 文件系统/模块

一、文件系统/模块

在Nodejs中可以通过内置的fs模块来操作系统文件。

文件系统操作都具有同步和异步两种方式。Node中的方法基本上都是由同步 sync结尾 和异步组成,如果有同步 ,就不要使用异步。

同步风格的特点:阻塞代码,同步是用等号赋值的拿结果。

异步风格的特点:不阻塞,但是需要用回调函数拿结果。

注意:同步方法和异步方法的参数是一致的。异步是必须加回调,否则报错。

回调函数的第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')

 

posted @ 2021-05-07 22:22  一花一世界111  阅读(58)  评论(0)    收藏  举报