Node.Js fs模块操作文件(二)

原创 2016年08月28日 15:43:07

二、以字节方式操作文件

1.fs.open(filename, flags, [mode], callback);  打开文件

/**
 * filename, 必选参数,文件名
 * flags, 操作标识,如"r",读方式打开
 * [mode],设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
 * callback 打开文件后回调函数,参数默认第一个err,第二个fd为一个整数,表示打开文件返回的文件描述符,window中又称文件句柄
 */

var fs=require('fs');
var path=require('path');
var file1=path.resolve('/test1/one.txt');
fs.open(file1,'r+',function(err,fd){
	if(err){
		return console.error(err);
	}
	console.info(fd); //fd 文件句柄
	console.log('文件打开成功');
});
2. fs.read(fd, buffer, offset, length, position, callback);     读取文件 ,读取打开的文件内容到缓冲区中

/**
 * fd, 使用fs.open打开成功后返回的文件描述符
 * buffer, 一个Buffer对象,v8引擎分配的一段内存
 * offset, 整数,向缓存区中写入时的初始位置,以字节为单位
 * length, 整数,读取文件的长度
 * position, 整数,读取文件初始位置;文件大小以字节为单位
 * callback(err, bytesRead, buffer), 读取执行完成后回调函数,bytesRead实际读取字节数,被读取的缓存区对象
 */

var fs=require('fs');
var path=require('path');
var file1=path.resolve('/test1/one.txt');
fs.open(file1,'r',function(err,fd){
	if(err)
		return console.error(err);
	var buffer=new Buffer(255);
	//每一个汉字utf8编码是3个字节,英文是1个字节
	fs.read(fd,buffer,0,9,3,function(err,bytesRead,buffer){
		if(err)
			throw err;
		console.log(bytesRead); // 9
		console.log(buffer.slice(0,bytesRead).toString()); // 三个汉字 ‘是一段’
		//读取完后,再使用fs读取时,基点是基于上一次读取位置计算;
		fs.read(fd,buffer,0,6,null,function(err,bytesRead,buffer){
			console.log(bytesRead); // 6
			console.log(buffer.slice(0,bytesRead).toString()); // 两个汉字 '通过'
		});
	});
});
3. fs.close(fd, callback)   关闭文件 
var fs = require('fs');
var buf = new Buffer(1024);
var path = require('path');
var file1 = path.resolve('/test1/one.txt');
//打开文件
fs.open(file1, 'r+', function(err, fd) {
    if (err) return console.error(err);
    //读取文件
    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {
        if (err) console.log(err);
        //仅输出独处的字节
        if (bytes > 0) {
            console.log(buf.slice(0, bytes).toString());
        }
        //关闭文件
        fs.close(fd, function(err) {
            if (err) console.log(err);
            console.log('文件关闭成功');
        });
    });
});
4. fs.ftruncate(fd, len, callback)  截取文件
/**
*fd - 通过 fs.open() 方法返回的文件描述符。
*len - 文件内容截取的长度。
*callback - 回调函数,没有参数。
*/

var fs=require('fs');
var buf=new Buffer(1024);
var path=require('path');
var file1=path.resolve('/test1/one.txt');
//打开文件
fs.open(file1,'r+',function(err,fd){
	if(err)
		return console.error(err);
	//截取文件
	fs.ftruncate(fd,6,function(err){
		if(err)
			return console.error(err);
		//读取文件
		fs.read(fd,buf,0,buf.length,0,function(err,bytes){
			if(err)
				return console.error(err);
			//输出读取的字节
			if(bytes>0){
				console.log(buf.slice(0,bytes).toString());
			}
			//关闭文件
			fs.close(fd,function(err){
				if(err)
				   console.log(err);
				console.log('关闭文件成功!');
			});
		});
	});
});

flags 参数可以是以下值:

Flag 描述
r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 'w+', 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Mongodb 查询指定时间范围的数据

今天用mongodb查昨天某个collection产生的记录数量,在mysql里面可以用between..and..或者 >、>=、mongodb有自己的语法。mongodb里比较,用 "$gt" 、...

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)

问题: 1,ISODate("2016-01-01T00:00:00Z"),这个是什么日期格式。 2,mongo vue的时间类型属性的相关查询。包括,大于某个时间,小于某个时间,在某一段时间范围。 ...

mongodb对日期范围查询

1. mongodb中日期类型: 2. 命令行中,日期范围查询: 3.采用morphia操作日期查询:

Node.Js fs模块文件操作(三)

三、Node.Js 文件或目录监视 1.fs.watchFile(filename, [options], listener); 对文件进行监视,并且在监视到文件被修改时执行处理 /** ...

Node.Js fs模块文件操作(一)

一、字符串操作文件 1.fs.writeFile(filename,data,[options],callback); 创建并写入文件 /**  * filename, 必选参数,文件名  *...

node.js 使用fs模块对系统文件及目录进行读写操作

如果要用这个模块,首先需要引入,fs已经属于node.js自带的模块,所以直接引入即可 var fs = require('fs');1.读取文件readFile方法使用 fs.readF...

Node.Js fs模块文件夹操作

1.fs.readdir(path, callback); 使用fs.readdir读取目录,重点其回调函数中files对象 /**  * path, 要读取目录的完整路径及目录名;  * [cal...

node.js之基本文件系统模块fs

如何使用fs?其基本操作就是引入模块操作然后使用他所暴露的方法var fs = require('fs');//因为是通用模块所谓不需要加位置fs模块同时提供了异步操作和同步操作,一般只使用异步操作,...

node fs模块--文件操作

1、异步读取   fs.readFile( url , code , callback);   2、同步读取   fs.readFileSync( url , code ); ...

Node.js文件模块fs监视文件变化

Node.js文件模块fs监视文件变化 Node中文件模块fs监视文件的函数源码如下: fs.watch = function(filename) { nullCheck(filename...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)