美文网首页
node的fs模块

node的fs模块

作者: 浮若年华_7a56 | 来源:发表于2022-06-25 12:03 被阅读0次

一.fs模块的同步和异步

使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式。
异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined。
异步写法有一个回调函数,同步方法加Sync

同步方法执行完并返回结果后,才能执行后续的代码。而异步方法采用回调函数接收返回结果,可以立即执行后续代码。

二.fs模块读取异步

var fs = require('fs'); // 引入fs模块
fs.readFile('./test.txt', function(err, data) {//异步,同步方法:readFileSync
  // 读取文件失败/错误
  if (err) {
      throw err;
  }
  // 读取文件成功(显示原始二进制编码,要显示文件内容可以使用toString()或者设置输出编码。)
  console.log(data);
});

设置输出编码
fs.readFile('文件名','utf-8',function(err,data){
  if(err){
    throw err
  }
  console.log(data)
})

三.fs模块写入文件内容(如果没有会创建文件,写入时会清空文件,flag是追加参数,默认是w(写),r是读取,a是追加)

var fs=require('fs')
fs.writeFile('文件名',‘内容’,{flag:w},function(err,data){//同步:writeFileSync
if(err){
    throw err
  }
  console.log(data)
})

四.fs模块的fs.read和fs.write

  fs.read和fs.write也用于读写文件,但提供更底层的操作,实际应用中多用fs.readFile和fs.writeFile,
  但使用fs.read和fs.write需要fs.open和fs.colse打开和关闭文件

  fs.read(fd,buffer,offset,length[,position],callback(err,bytesWritten,buffer))接收6个参数。

  参数说明:

  *   fd 文件描述符,必须接收fs.open()方法中的回调函数返回的第二个参数。
  *   buffer 是存放 将被写入的数据,buffer尺寸的大小设置最好是8的倍数,效率较高。
  *   offset  **buffer写入的偏移量**。
  *   length (integer)指定 写入文件中数据的**字节数**。
  *   position (integer) 指定 在写入文件内容的**起始位置**。
  *   callback 回调函数,参数如下
    *   err 用于抛出异常
    *   bytesWritten从文件中读取内容的**实际字节数**。
    *   buffer 被读取的缓存区对象。

var fs = require('fs'); // 引入fs模块

// 打开文件
fs.open('./testwrite.txt', `w`, function(err, fd) { 
  if (err) { throw err;}
  console.log('open file success.'); var buffer = new Buffer('shiyanlou'); // 读取文件
  fs.write(fd, buffer, 0, 6, 0, function(err, bytesWritten, buffer) { 
    if (err) { throw err;}
    console.log('write success.'); // 打印出buffer中存入的数据
    console.log(bytesWritten, buffer.slice(0, bytesWritten).toString()); // 关闭文件
    fs.close(fd);
   });
 });

四.fs模块的fs.open

fs.open(path路径,flags打开文件的方式,[mode]文件权限(可行参数默认是0666),callback回调函数)
flags的值及说明如下:
r:读取文件,文件不存在时报错
r+:读取并写入文件,文件不存在时报错
rs:以同步的方式读取文件,文件不存在时报错
rs+:以同步到方式读取并写入文件,文件不存在时报错
w:写入文件,文件不存在时创建,存在则清空内容
wx:写入文件,但文件不存在会报错
w+:读取并写入文件,文件不存在时创建,存在则清空内容
wx+:读取并写入文件,但文件不存在则报错
a:以追加方式写入文件,文件不存在时创建
ax:以追加方式写入文件,但文件存在时报错
a+:读取并追加写入文件,文件不存在时创建
ax+:读取并追加写入文件,但文件存在时报错

五.fs模块的fs.close(fs.close(fd,callback)fd是所打开文件的文件描述符)

fs.read(fd,buffer,offset,length,position,callback)接收6个参数。
参数说明:
  fd 文件描述符,必须接收fs.open()方法中的回调函数返回的第二个参数。
  buffer 是存放读取到的数据的Buffer对象。
  offset 指定 向buffer中存放数据的起始位置。
  length 指定 读取文件中数据的字节数。
  position 指定 在文件中读取文件内容的起始位置。
  callback 回调函数,参数如下
    err 用于抛出异常
    bytesRead 从文件中读取内容的实际字节数。
    buffer 被读取的缓存区对象。

var fs = require('fs'); // 引入fs模块
// 打开文件
fs.open('./testread.txt', 'r', function(err, fd) {
  if (err) {
      throw err;
  }
  console.log('open file success.');
  var buffer = new Buffer(255);
  // 读取文件
  fs.read(fd, buffer, 0, 10, 0, function(err, bytesRead, buffer) {
      if (err) {
          throw err;
      }
      // 打印出buffer中存入的数据
      console.log(bytesRead, buffer.slice(0, bytesRead).toString());
      // 关闭文件
      fs.close(fd);
  });
});

六.fs模块的fs.stat(检测是文件还是目录)

var fs=require('fs')
fs.stat(路径,function(err,data){
data.isFile()//是文件
data.isDirection()//是目录
})

七.fs模块的fs.mkdir(创建目录)

var fs=require('fs')
fs.mkdir(创建的目录路径,function(err,data){
  
})

八.fs模块的fs.appendFile(追加写入文件)

var fs=require('fs')
fs.appendFile(文件路径,function(err,data){//同步:appendFileSync
  
})

九.fs模块的fs.readdir(读取目录)

var fs=require('fs')
fs.appendFile(要读取的目录路径,function(err,data){
  
})

十.fs模块的fs.rename(重命名或移动文件)

var fs=require('fs')
fs.rename(原文件名称/路径,新文件名称/路径,function(err,data){
  
})

十一.fs模块的fs.rmdir(删除目录)

var fs=require('fs')
fs.rmdir(路径,function(err,data){
  
})

十二.fs模块的fs.uplink(删除文件)

var fs=require('fs')
fs.rmdir(路径,function(err,data){
  
})

十三.fs模块的fs.createReadStream(以流的方式读取文件)

var fs=require('fs')
fs.createReadStream(路径,function(err,data){
  
})

十四.fs模块的fs.createWriteStream(以流的方式读取文件)

var fs=require('fs')
var writestream= fs.createWriteStream(路径)
writestream.write()//写入内容
writestream.end()//标记文件末尾,才能监听写入完成事件
//监听写入完成事件
writeStream.on('finish',()=>{
   console.log('写入完成')
})

十五.fs模块的fs.copyFile(将文件从原路径复制到现路径,如果该文件已存在则覆盖)

var fs=require('fs')
fs.copyFile("文件1", "文件2");

十六.fs模块的fs.exists(查看文件或文件夹是否存在)

var fs=require('fs')
fs.exists(路径);

十七.fs模块的fs.truncate(截取文件内容)

var fs=require('fs')
fs.truncate(路径,将文件截取到的大小,function()[
});

十八.fs模块的fs.watchFile(监听文件数据变化)

filename:文件的路径
options:配置对象
    bigint:默认为 false
    persistent:只要正在监视文件,进程是否应继续运行。默认为 true
    interval:监听的间隔时间,默认为 5007
 listener:回调函数,监听的文件被修改后调用,接收 2 个参数:
  current:文件当前的状态,是 fs.status 对象
  previous:文件修改前的状态,也是 fs.status 对象
var fs=require('fs')
fs.watchFile(路径,配置对象,function()[
});

十九.管道流

const fs = require('fs')

let readStream = fs.createReadStream('./data/write.txt')
let writeStream = fs.createWriteStream('./data/copy.txt')

readStream.pipe(writeStream)

相关文章

  • 04-文件读写

    fs模块---》操作文件---》io----》node的特长 fs模块是node非常重要的模块,能体现出node的...

  • 关于node.js一些模块的记录「FS模块」

    目录 Node.JS教程 FS模块 Path模块 FS模块 Path模块 Node.js path 模块提供了一些...

  • 2016,9,13

    ##node.js的学习 #node.js的fs模块 var fs = require('fs'); functi...

  • 三:fs模块

    node的fs模块是文件模块,为node自带的模块,负责文件的读写。fs模块可以同步和异步读写文件 1. 异步读取...

  • node.js学习(2)——fs模块

    上一节-node.js学习(1)— http模块 1.文件模块-fs fs模块是node自带的文件系统模块。我们这...

  • 初步认识node.js

    fs系统模块:读取文件: // node 读取文件const fs = require('fs');fs.read...

  • 八:Node文件系统管理

    导入:var fs = require("fs") 定义:Node.js 文件系统(fs 模块)模块中的方法均有异...

  • node.js文件操作

    fs 文件操作用的模块为node.js中的fs模块.因此要提前将其引入. var fs = require('fs...

  • Node学习(8)--文件系统

    Node.js 文件系统 Node 导入文件系统模块(fs)语法如下所示:var fs = require("fs...

  • node模块

    node 模块 内置模块http ( creatServer)fs (resdFileSync,writeFile...

网友评论

      本文标题:node的fs模块

      本文链接:https://www.haomeiwen.com/subject/ubopvrtx.html