1 打开文件
fs.open(path, flags[, mode], callback)
参数:
path
<string> | <Buffer> | <URL>
flags
<string> | <number> 参阅支持的文件系统标志。
mode
<integer> 默认值: 0o666
(可读写)。
callback
<Function>
err
<Error>
fd
<integer>
//异步打开文件
fs.open('./tmp/input.txt', 'r+', function (err, fd) {
if (err) throw err;
console.log('文件打开成功');
});
//同步打开文件
const fd = fs.openSync('./tmp/input.txt', 'r+');
console.log(fd);
2 读取文件
fs.readFile(path[, options], callback)
参数:
path
<string> | <Buffer> | <URL> | <integer> 文件名或文件描述符。
encoding
<string> | <null> 默认值: null
。
flag
<string> 参阅支持的文件系统标志。默认值: 'r'
。
callback
<Function>
err
<Error>
回调会传入两个参数 (err, data)
,其中 data
是文件的内容。
如果没有指定 encoding
,则返回原始的 buffer。
如果 options
是字符串,则它指定字符编码:
// 异步读取文件
fs.readFile('./tmp/input.txt',{encoding:'utf8'}, (err, data) => {
if (err) throw err;
console.log(data);
})
//同步读取文件
const data = fs.readFileSync('./tmp/input.txt',{encoding:'utf8'});
console.log(data);
3 读取指定字节数的缓存数据
fs.read(fd, buffer, offset, length, position, callback)
参数:
fd
<integer>
buffer
<Buffer> | <TypedArray> | <DataView>
offset
<integer>
length
<integer>
position
<integer>
callback
<Function>
err
<Error>
bytesRead
<integer>
buffer
<Buffer>
从 fd
指定的文件中读取数据。
buffer
是数据将写入的缓冲区。
offset
是 buffer 中开始写入的偏移量。
length
是一个整数,指定要读取的字节数。
position
参数指定从文件中开始读取的位置。 如果 position
为 null
,则从当前文件位置读取数据,并更新文件位置。 如果 position
是整数,则文件位置将保持不变。
回调有三个参数 (err, bytesRead, buffer)
。
//读取指定字节数的缓存数据
let buf = Buffer.alloc(1024);
fs.open('./tmp/input2.txt', 'r+', (err, fd)=> {
if (err) throw err;
fs.read(fd, buf, 0, buf.length, 0, (err, bytesRead, buffer) => {
if (err) throw err;
console.log(`${bytesRead}字节被读取`);
if (bytesRead > 0) {
console.log(buf.slice(0, bytesRead).toString());
}
})
});
4 获取文件信息
fs.fstat(fd[, options], callback)
//获取文件信息
fs.stat('./tmp/input.txt', (err, stats) => {
if (err) throw err;
//提供有关文件的信息
console.log(stats);
/*
* dev: 1579443008, //包含该文件的设备的数字标识符。
mode: 33206, //描述文件类型和模式的位字段
nlink: 1, //文件存在的硬