Nodejs开发实战 : 第四节 Node模块-FileSystem

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX 文件系统操作。

异步(async)和同步(sync)

Nodejs中Api一般都是异步的接口,如果调用同步的只需要在后面加上xxxSync()。

Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

var fs = require("fs");​//异步读取文件fs.readFile('input.txt', function (err, data) {   if (err) {     return console.error(err);   }   console.log("Asynchronous read: " + data.toString());});​

// /同步读取文件var data = fs.readFileSync('input.txt');console.log("Synchronous read: " + data.toString());​console.log("Program Ended");​  

Node文件系统:目录操作

1. 判断文件路径是否存在: fs.exists(path, callback)

参数说明:

path 欲检测的文件路径

callback 回调

​fs.exists("test",function(exists){   console.log(exists);})

2. 创建目录 fs.mkdir/mkdirSync(path[, mode], callback)

path – 文件路径 ;

mode – 设置目录权限,默认为0777 callback – 回调函数

var fs = require("fs");​fs.mkdir("test",function(error){       if (err) return console.error(err);       console.log('目录创建成功');})

3. 查看目录 fs.readdir(path, callback(err, files))

path – 文件路径。

callback – 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为 目录下的文件数组列表

fs.readdir("test",function(error,files){   console.log(files);})

返回结果: [ ‘note.txt’ ]

fs.readdir("test",function(error,files){   console.log(files);})

返回结果: [ ‘note.txt’ ]

4. 删除目录 fs.rmdir(path, callback)

参数使用说明如下:

path – 文件路径。

callback – 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为 目录下的文件数组列表

fs.readdir("test",function(error,files){   console.log(files);})

返回结果: [ ‘note.txt’ ]

注意:只能删除空的目录,有文件的目录会报错:

[Error: ENOTEMPTY: directory not empty, rmdir ‘F:\FullStack-Cource-2017\Nodejs-Laravel-Action\03-Node模块-FileSystem\test’]

Node文件模块:文件操作说明

1. 写入文件 fs.writeFile(filename, data[, options], callback)

如果文件存在,写入的内容会覆盖旧文件内容

参数使用说明如下:

path - 文件路径。 

data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。 

options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 ,flag 为 'w' callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

var fs = require("fs");​fs.writeFile("test/1.txt","hello file",function(error){   console.log(error);})

2. 文件读取 fs.readFile( url , code , callback);

异步读取文件

fs.readFile(“test/1.txt”,”utf-8″,function(error,data){ console.log(data); })

异步读取文件

var data =fs.readFileSync(“test/1.txt”,”utf-8″); console.log(data);

3. 向文件中追加写入 fs.appendFile(name,str,encode,callback);

参数说明:

name : 文件名

str : 添加的字段

encode : 设置编码

callback : 回调函数

栗子

fs.appendFile(“test/1.txt”,’窗前明月光,疑是地上霜’,’utf8′,function(eror){

})

4. 改变文件名 : fs.rename(old文件名,新文件名,callback(传递一个err参数))

fs.rename(“test/1.txt”,”test/a.txt”,function(error){

})

5. 查看文件状态 fs.stat(fileaddr,callback(error,stats))

在fs模块中,可以使用 fs.stat() 方法或 fs.lstat() 方法查看一个文件或目录的信息,如文件的大小、创建时间、权限等信息。这两个方法的唯一区别是当查看符号链接文件的信息时,必须使用 fs.lstat() 方法。

var fs = require(“fs”);

 var path = require(“path”);

var fileaddr = path.resolve(__dirname,"file/note.txt");

/** * fileaddr: 需要查看状态的相对,或者绝对地址 * callback(error,stats): error:返回的错误信息 *                       stats:返回的成功信息 */fs.stat(fileaddr,function(error,stats){   if(error){       console.log(error)   }else{       console.log(stats);       console.log(stats.isFile());       console.log(stats.isDirectory());       console.log(stats.isCharacterDevice());       console.log(stats.isSymbolicLink());       console.log(stats.isFIFO());       console.log(stats.isSocket());       console.log(stats.isBlockDevice());   }})

fs.Stats对象的方法如下:

stats.isFile() : 判断被查看对象是否是一个文件。如果是标准文件,返回true。是目录、套接字、符号连接、或设备等返回false。

stats. isDirectory() : 判断被查看对象是否是一个目录。如果是目录,返回true。

stats. isBlockDevice() : 判断被查看对象是否是一个块设备文件。 如果是块设备,返回true,大多数情况下类UNIX系统的块设备都位于/dev目录下。

stats. isCharacterDevice() : 判断被查看对象是否是一个字符设备文件。如果是字符设备,返回true。

stats. isSymbolicLink() : 判断被查看对象是否是一个符号链接文件。如果是符号连接,返回true。该方法仅在fs.lstat()方法的回调函数中有效。

stats.isFIFO() : 判断被查看对象是否是一个FIFO文件。如果是FIFO,返回true。FIFO是UNIX中的一种特殊类型的命令管道。该方法仅在LINUX系统下有效。

stats.isSocket() : 判断被查看对象是否是一个socket文件。 如果是UNIX套接字,返回true。该方法仅在LINUX系统下有效。

fs.Stats对象的属性如下:

dev : 文件或目录所在的设备ID。该属性值在UNIX系统下有效;

mode : 文件或目录的权限标志,采用数值形式表示;

nlink : 文件或目录的的硬连接数量;

uid : 文件或目录的所有者的用户ID。该属性值在UNIX系统下有效;

gid : 文件或目录的所有者的用户组ID。该属性值在UNIX系统下有效;

rdev : 字符设备文件或块设备文件所在设备ID。该属性值在UNIX系统下有效;**

ino : 文件或目录的索引编号。该属性值仅在UNIX系统下有效;

size : 文件的字节数;

atime : 文件或目录的访问时间;

mtime : 文件或目录的最后修改时间;

ctime : 文件或目录状态的最后修改时间;

birthtime : 文件创建时间,文件创建时生成。在一些不提供文件

birthtime 的文件系统中,这个字段会使用 ctime 或 1970-01-01T00:00Z 来填充;

6. 删除文件 fs.unlink(path, callback)

参数说明


你可能感兴趣的:(Nodejs开发实战 : 第四节 Node模块-FileSystem)