博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.Js fs模块操作文件(二)
阅读量:4288 次
发布时间:2019-05-27

本文共 2966 字,大约阅读时间需要 9 分钟。

二、以字节方式操作文件

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+', 但是如果文件路径存在,则文件读取追加失败。

转载地址:http://yyogi.baihongyu.com/

你可能感兴趣的文章
yum配置与使用(很详细)
查看>>
yum的使用
查看>>
./configure 的配置和用法
查看>>
web.config
查看>>
web.xml
查看>>
web.xml(简介介绍)
查看>>
asp.net控件
查看>>
Java 面试题
查看>>
Java 代码安全(Coding Safe)
查看>>
正则表达式
查看>>
常用正则表达式大全
查看>>
JDK1.5(jdk5.0)新特性
查看>>
JDK1.6(jdk6.0)新特性
查看>>
JDK1.7(jdk7.0)新特性
查看>>
JDK1.8(jdk8.0)新特性
查看>>
struts2.xml配置文件
查看>>
梦想在三十岁起航!__来自黑马程序员69期安卓班的学员
查看>>
java中的集合存储结构
查看>>
java中的集合存储结构
查看>>
Java基础——运算符
查看>>