node知识----文件I/O 文件I/O

文件操作

1.fs模块的基本用法

  • 文件的I/O需求-----node.js中提供了一个名为fs的模块来支持I/O操作

  • fs模块的文件I/O是对标准POSIX函数的简单封装

1.1 writeFile函数的基本用法

文件I/O 写入

writeFile函数 fs.writeFile(filename,data,callback)
  • fs模块提供writeFile函数,可以异步的将数据写入一个文件,如果文件存在则会被替换
var fs= require("fs");
 
fs.writeFile('test.txt', 'Hello Node', function (err) {
   if (err) throw err;
   console.log('Saved successfully'); //文件被保存
});

1.2 appendFile函数的基本用法

appendFile函数 fs.appendFile(文件名,数据,编码,回调函数(err))
  • writeFile函数虽然可以写入文件,但是如果文件已经存在,我们只想添加一部分内容,他就不能满足了
  • appendFile函数可以将新的内容追加到已有的文件中
  • 如果文件不存在,则会创建一个新的文件
  • 编码格式默认为“utf8”
var fs=require("fs");
fs.appendFile("text.txt","data to append",function(err){
    if(err) throw err;
    
    console.log('The "data to append" was appended to file!')
})

1.3 exists函数的基本用法

fs.exists(文件,回调函数(exists))
  • exists的回调函数只有一个参数,类型为布尔值
  • 通过它表示文件是否存在
var fs= require("fs");
 
fs.exists('/etc/passwd', function (exists) {
  console.log(exists ? "存在" : "不存在!");
});

1.4 rename函数的基本用法

  • 修改文件名称
  • rename函数提供修改名称服务
var fs=require("fs");

fs.rename(旧文件,新文件,回调函数(err){
if (err) throw err;

console.log("successful modeification")
})
  • 移动文件
  • 通过rename函数来达到移动文件的目的
var fs = require('fs');
 
fs.rename(oldPath,newPath,function (err) {
   if (err) throw err;
   console.log('renamed complete');
});

1.5 readFile函数的基本用法

fs.readFile(文件,编码,回调函数);
var fs = require('fs');
 
fs.readFile(文件名, function (err, data) {
  if (err) throw err;
  console.log(data);
});

回调函数里面的data就是读取的文件内容

1.6 unlink函数的基本用法

fs.unlink(文件,回调函数(err))
  • 删除想删除的文件

    var fs = require('fs');
     
    fs.unlink(文件, function(err) {
      if (err) throw err;
      console.log('successfully deleted');
    });
    

    目录的操作

    2.1 mkdir函数的基本用法

    fs.mkdir(路径,权限,回调函数(err))
  • 创建目录

  • 参数

    • 路径:新创建的目录。
    • 权限:可选参数,只在linux下有效,表示目录的权限,默认为0777,表示文件所有者、文件所有者所在的组的用户、所有用户,都有权限进行读、写、执行的操作。
    • 回调函数:当发生错误时,错误信息会传递给回调函数的err参数。

2.2 rmdir函数的基本用法

fs.rmdir(路径,回调函数(err))
var fs = require('fs');
 
fs.rmdir(path, function(err) {
  if (err) throw err;
  console.log('ok');
});

2.3 readdir函数的基本用法

  • 读取目录下所有文件
  • readdir函数可以读取到指定目录下所有的文件
var fs = require('fs');
 
fs.readdir(目录,回调函数(err,files));

回调函数 (callback) 接受两个参数 (err, files) 其中 files 是一个存储目录中所包含的文件名称的数组,数组中不包括 '.' 和 '..'。

总结

fs模块不但提供异步的文件操作,还提供相应的同步操作方法,需要指出的是,nodejs采用异步I/O正是为了避免I/O时的等待时间,提高CPU的利用率,所以在选择使用异步或同步方法的时候需要权衡取舍。