使用nodeJS中的fs模块对文件及目录进行读写,删除(2)

var fs = require('fs'); var fd = fs.openSync('1.txt','r'); var bf = Buffer.alloc(5); var result = fs.readSync(fd,bf,0,3,null); console.log(result);//3

3、写入文件 fs.write(fd, buffer, offset, length[, position], callback)

参数如下

fd <Integer>  文件标识

buffer <String> | <Buffer> 要将buffer中的数据写入到文件中

offset <Integer> buffer对象中要写入的数据的起始位置

length <Integer> length是一个整数,指定要写入的字节数

position <Integer> 指定从文件开始写入数据的位置的偏移量。 如果 typeof position !== 'number',则数据从当前位置写入

callback <Function> 回调有三个参数(err, written, buffer),其中written指定从buffer写入了多少字节

[注意]多次对同一文件使用fs.write且不等待回调,是不安全的。对于这种情况,强烈推荐使用 fs.createWriteStream

当我们要对打开的文件进行写操作的时候,打开文件的模式应该是读写模式

var fs = require('fs'); fs.open('1.txt','r+',function(err,fd){ if(err){ console.log('文件打开失败'); }else{ var bf = Buffer.from('test'); fs.write(fd,bf,0,3,null,function(err,len,buffer){ console.log(err);//null console.log(len);//3 console.log(buffer);//<Buffer 74 65 73 74> }) } });

fs.write(fd, data[, position[, encoding]], callback)

该方法写入data到fd指定的文件。如果data不是一个Buffer实例,则该值将被强制转换为一个字符串

不同于写入 buffer,该方法整个字符串必须被写入。不能指定子字符串,这是因为结果数据的字节偏移量可能与字符串的偏移量不同

fd  <Integer> 文件标识

data <String> | <Buffer> 要将string或buffer中的数据写入到文件中

position <Integer> 指向从文件开始写入数据的位置的偏移量。 如果 typeof position !== 'number',则数据从当前位置写入

encoding <String> 期望的字符串编码

callback <Function> 回调有三个参数(err, written, str),其中written指定从str写入了多少字节

var fs = require('fs'); fs.open('1.txt','r+',function(err,fd){ if(err){ console.log('文件打开失败'); }else{ fs.write(fd,'12345',function(err,len,str){ console.log(err);//null console.log(len);//5 console.log(str);//<Buffer 74 65 73 74> }) } });

fs.writeSync()

fs.write() 的同步版本。返回写入的字节数

var fs = require('fs'); var fd = fs.openSync('1.txt','r+'); var bf = Buffer.alloc(5); var result = fs.writeSync(fd,bf,0,3,null); console.log(result);//3

4、关闭文件 fs.close(fd, callback)

一个文件被操作后,要及时将该文件关闭

参数如下:

fd - 通过 fs.open() 方法返回的文件描述符。

callback - 回调函数,没有参数。

var fs = require('fs'); fs.open('1.txt','r+',function(err,fd){ if(err){ console.log('文件打开失败'); }else{ fs.close(fd, function(err){ if (err){ console.log(err); } console.log("文件关闭成功"); }); } });

fs.closeSync(fd)

fs.close(fd, callback)的同步版本,返回undefined

var fs = require('fs'); var fd = fs.openSync('1.txt','r+'); fs.closeSync(fd);

File操作

上一部分介绍的都是些底层的操作,接下来将介绍一些更便捷的文件操作。使用下列方法的时候,不需要再打开和关闭文件,直接操作即可

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

异步的将数据写入一个文件,如果文件不存在则新建,如果文件原先存在,会被替换

参数如下:

file - 文件名或文件描述符。

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

options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

var fs = require('fs'); var filename = '1.txt'; fs.writeFile(filename,'hello',function(err){ console.log(err);//null })

fs.writeFileSync(file, data[, options])

fs.writeFile() 的同步版本。返回 undefined

var fs = require('fs'); var filename = '1.txt'; fs.writeFileSync(filename,'abc');

2、追加文件 fs.appendFile(filename, data, [options], callback)

异步地追加数据到一个文件,如果文件不存在则创建文件。 data 可以是一个字符串或 buffer

参数如下

file - 文件名或文件描述符。

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

options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

var fs = require('fs'); var filename = '1.txt'; fs.appendFile(filename,' world',function(err){ console.log(err);//null })

fs.appendFileSync(file, data[, options])

fs.appendFile()的同步版本。返回undefined

var fs = require('fs'); var filename = '1.txt'; fs.appendFileSync(filename,' lalala');

3、读取文件 fs.readFile(file[, options], callback)

参数如下

file - 文件名或文件描述符

options - 该参数是一个对象,包含 {encoding, flag}。默认编码为null,即如果字符编码未指定,则返回原始的 buffer;flag默认为'r'

callback - 回调函数,回调有两个参数 (err, data),其中data是文件的内容(buffer对象),err是错误信息参数,在写入失败时返回

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c1728b85745c00c30e353f6f80606a9e.html