fs
模块用来对本地文件系统
进行操作。
const fs = require('fs');
fs
模块中提供的方法可以用来执行基本的文件操作,包括读、写、重命名、创建和删除目录以及获取文件元数据等。
fs
模块中的方法大多是由标准POSIX
函数封装而成。
fs
模块中的方法都有同步和异步两个版本。
异步操作的版本都会使用一个回调方法作为最后一个参数。当操作完成的时候,该回调方法会被调用。 而回调方法的第一个参数总是保留为操作时可能出现的异常。 如果操作成功,则第一个参数的值是null
或undefined
。
同步操作的版本的方法名称则是在对应的异步方法之后加上一个Sync
作为后缀。 比如异步的rename()
方法的同步版本是renameSync()
。
同步操作方法的返回值,通常在正常执行的返回值是null
或undefined
,出现错误的时候才不会为null
或undefined
。
参数 | 类型 |
---|---|
file | String:文件路径 Buffer:缓冲区,Buffer的实例 Integer:文件描述符 |
option | Object:可以有 encoding 和flag 两个字段String:只需要设置一个字段的时候,把对象退化为String |
callback | Function:回掉原型为function(Error error, Buffer data) |
读取整个文件。
示例1:
var fs = require('fs');
fs.readFile('readFile.js', function (err, dataBuffer) {
if (err) {
throw err;
}
console.log(dataBuffer.toString());
});
示例2(按行读取整个文件):
var fs = require('fs');
fs.readFile('./readFileByLine.js', function (err, dataBuffer) {
var text = dataBuffer.toString();
var lineTexts = text.split('\n');
lineTexts.forEach(function (lineText, index, lineTexts) {
console.log(lineText);
});
});
示例3(以utf-8编码):
var fs = require('fs');
fs.readFile('./readFileByLine.js', 'utf-8', function (err, dataBuffer) {
var text = dataBuffer.toString();
var lineTexts = text.split('\n');
lineTexts.forEach(function (lineText, index, lineTexts) {
console.log(lineText);
});
});
参数 | 类型 |
---|---|
file | String:文件路径 Buffer:缓冲区,Buffer的实例 Integer:文件描述符 |
data | String | Buffer | Uint8Array |
option | Object:可以有 encoding 、mode 、flag 三个字段String:只需要设置一个字段的时候,把对象退化为String |
callback | Function:回掉原型为function(Error error) |
写文件,无论这个文件原来是否存在。如果原来存在,就会覆盖原来的文件,如果原来不存在,就创建新文件。
示例:
var fs = require('fs');
fs.writeFile('xx.txt', 'Hello World!', function (err) {
if (err) {
throw err;
}
console.log('success');
});
以追加的方式写文件。其他地方与fs.writeFile(file, data [, option], callback)
完全一样。
参数 | 类型 |
---|---|
file | String:文件夹路径 Buffer:缓冲区,Buffer的实例 |
option | Object:只有 encoding 字段String:只需要设置一个字段的时候,把对象退化为String |
callback | Function:回掉原型为function(Error error, String[] files) |
示例1:
var fs = require('fs');
fs.readdir('.', function (err, files) {
if (err) {
throw err;
}
files.forEach(function (file, index, files) {
});
});
示例2:
var fs = require('fs');
fs.readdir('.', 'utf-8', function (err, files) {
if (err) {
throw err;
}
files.forEach(function (file, index, files) {
});
});
参数 | 类型 |
---|---|
file | String:文件夹路径 Buffer:缓冲区,Buffer的实例 |
mode | Integer:设置权限(读、写、执行),默认是八进制的 0o777 。 与bash 中的chmod 规则一样。 |
callback | Function:回掉原型为function(Error error) |
注意:要创建份文件夹的父文件夹一定要存在,否则会报错。bash
里的mkdir
命令可以使用-p
参数创建不存在的父文件夹,而这里似乎没有提供这个参数。
示例1:
var fs = require('fs');
fs.mkdir('xxxx', function (err) {
if (err) {
console.log(err);
} else {
console.log('success');
}
});
示例2:
var fs = require('fs');
fs.mkdir('xxxx', 0o741, function (err) {
if (err) {
console.log(err);
} else {
console.log('success');
}
});
删除文件或者文件夹。
示例:
var fs = require('fs');
fs.unlink('./xx.js', function (err) {
if (err) {
throw err;
}
console.log('successfully deleted xx.js');
});