版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012054869/article/details/82110818
5. 文件字节操作
(1)打开文件
- Fs.open()
- Fs.openSync()
文件打开模式:
'r' - 以读取模式打开文件。如果文件不存在则发生异常。
'r+' - 以读写模式打开文件。如果文件不存在则发生异常。
'w' - 以写入模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
'wx' - 类似 'w',但如果 path 存在,则失败。
'w+' - 以读写模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
'wx+' - 类似 'w+',但如果 path 存在,则失败。
'a' - 以追加模式打开文件。如果文件不存在,则会被创建。
'ax' - 类似于 'a',但如果 path 存在,则失败。
'a+' - 以读取和追加模式打开文件。如果文件不存在,则会被创建。
'ax+' - 类似于 'a+',但如果 path 存在,则失败。
(2)读取
- Fs.read()
fs.read(fd, buffer, offset, length, position, callback)
fd;指定的文件中读取数据
buffer:数据被写到buffer中,
offset:buffer中哪里开始写入,当offset为1时,length不能小于99
length:整数,指定读取的字节数
option,指定从文件中位置读取
callback,三个参数,function(err, bytesRead, buffer)
- Fs.readSync()
例子:读取指定字节数
// 导入文件系统
const fs = require('fs');
//打开文件
fs.open('file/1.txt', 'r', function (err, fd) {
if (err) throw err;
// 读取文件
//首先创建buffer,文件读取到buffer中
let buf = Buffer.alloc(100);
fs.read(fd, buf, 1, 99, 0, function (err, bytesRead, buffer) {
console.log('读取了' + bytesRead + '字节');
console.log(buffer);
console.log(buffer.length);
console.log(buffer.toString());
})
});
例子二:读取文档所有的内容
// 导入文件系统
const fs = require('fs');
//打开文件读取
fs.open('file/1.txt', 'r', function (err, fd) {
if (err) throw err;
// 读取文件
//首先创建buffer,文件读取到buffer中
let size = fs.statSync('file/1.txt').size;//计算文件长度
let buf = Buffer.alloc(size);
fs.read(fd, buf, 0, size, 0, function (err, bytesRead, buffer) {
if (err) throw err;
console.log('读取了' + bytesRead + '个字节');
console.log(buffer);
console.log(buffer.length);
console.log(buffer.toString());
})
});
(3)写入
- Fs.write()
- Fs.writeSync()
例子:写入buffer
//打开文件,并写入
// 'a'不停的写入,'w'只写入一次,'w+'把原来的内容全部删除再重新写入
fs.open('file/2.txt', 'a', function (err, fd) {
if (err) throw err;
//写入buffer
let buf = Buffer.from('中华人民共和国');
// 一
fs.write(fd,buf,3,buf.length-3,0,function (err,bytesRead,buffer) {
if(err) throw err;
console.log('写入了'+bytesRead+'个字节');
console.log(bytesRead);
console.log('buffer的内容'+buffer.toString());
})
})
例子二:写入字符串
//打开文件,并写入
// 'a'不停的写入,'w'只写入一次,'w+'把原来的内容全部删除再重新写入
fs.open('file/2.txt', 'a', function (err, fd) {
if (err) throw err;
//写入buffer
let buf = Buffer.from('中华人民共和国');
// 二,直接写入字符串string
fs.write(fd, '锄禾日当午', 0, function (err, bytesRead, string) {
if (err) throw err;
console.log('写入了' + bytesRead + '个字节');
console.log(string);
})
})
(4)截断
- Fs.ftruncate()
- Fs.ftruncateSync()
例子:
// 打开并截断字符串,使用'a+'
fs.open('file/3.txt', 'r+', function (err, fd) {
if (err) throw err;
fs.ftruncate(fd, 6, function (err) {
if (err) throw err;
console.log('文件截断成功')
})
})
(5)关闭
- Fs.close()
- Fs.closeSync()
例子:
// 追加内容
fs.open('file/4.txt', 'a', function (err, fd) {
if (err) throw err;
fs.appendFile(fd, '\n日照香炉生紫烟\n', function (err) {
if (err) throw err;
console.log('追加成功');
fs.close(fd, function (err) {
if (err) throw err;
})
})
})