关闭

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

标签: node.jsfs模块文件操作
537人阅读 评论(0) 收藏 举报
分类:

二、以字节方式操作文件

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

0
0
查看评论

Node.js fs模块——读写文件

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。建议大家是用异步方法,比起同步,异步方法性能更高,速度更快,而且没有...
  • chy555chy
  • chy555chy
  • 2016-09-18 15:53
  • 1413

Node.js fs 模块

一、同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式。 异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,那么这个参数为null或者undefined。 异步方法实例代码(无需在虚拟机...
  • xy2204
  • xy2204
  • 2015-07-21 16:18
  • 1226

Node.js 中 fs 模块使用样例

Node.js 中 fs 模块使用样例 使用Node.js编程中难免用的其fs模块的API,如读、写文件操作等。fs模块所有的API都有异步和同步的形式。同步和异步函数接口的应用环境不同,例如,使用异步API无法保证函数调用顺序,要使用回调函数等方法才能得到满意的结果。现将常见的文件操作场景汇总一...
  • cocoonyang
  • cocoonyang
  • 2016-09-12 10:47
  • 1412

node.js fs,http 模块用法

1 error: 2 EventEmitter定义了一个特殊的时间error,它包含了‘错误’的语义,当error被发射时,EventEmitter规定如果没有 3 响应的监听器,Node.js会把它当做异常,退出程序并打印调用栈,一般我们要为会发射error事件的对象设置监...
  • luo200618
  • luo200618
  • 2016-08-10 14:44
  • 892

nodejs中的fs模块

fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、s删除、重命名等操作。当需要使用该模块时,需要先导入该文件var fs = require('fs'); nodejs文件系统中的方法均有异步和同步两种版本,例如读取文件内容的函数有异步的fs.readFile()和同步...
  • charlene0824
  • charlene0824
  • 2016-05-30 21:03
  • 4480

Node.js 文件模块(fs)模块介绍

文件的I/O是由标准的POSIX函数封装二成的。需要使用require(‘fs’)访问这个模块。 所有的方法都提供了异步和同步两种方式。 1、fs.rename(path1, path2, [callback]) :这个API的主要功能就是重命名某个文件。例如:var fs = require(...
  • u014695532
  • u014695532
  • 2016-04-16 20:38
  • 1953

Node.js学习之内置模块fs

IDE为VSCode.js内置的fs模块就是文件系统模块,负责读写文件'use strict'var fs = require('fs'); //异步读取文件(文本)编码格式指定为utf-8 fs.readFile('sample.txt','...
  • sinat_35670989
  • sinat_35670989
  • 2017-10-12 15:30
  • 495

Node.js内置的文件系统模块(fs)

异步读取文件 按照js的标准,异步读取一个文本文件的格式如下: 'use strict' const fs = require('fs') fs.readFile('test.txt', 'utf-8', function(er...
  • const_ly
  • const_ly
  • 2017-08-16 17:59
  • 296

nodejs fs模块读取文件的路径问题

本文介绍了在nodejs中fs模块读取文件使用相对路径遇到的一个问题及其解决方法,并总结了一些nodejs中获取路径或处理路径的方式。
  • k358971707
  • k358971707
  • 2017-12-11 17:53
  • 161

webstorm中使用nodejs时require(‘fs’)系统报找不到fs模块

打开file->setteings->在左边搜索框输入node(如图1)->按照步骤在configure选中npm的地址就行。 这个已经配好了,找个没配好的图,,,
  • xiaoninvhuang
  • xiaoninvhuang
  • 2017-04-27 10:23
  • 2481
    个人资料
    • 访问:1434692次
    • 积分:16121
    • 等级:
    • 排名:第784名
    • 原创:468篇
    • 转载:153篇
    • 译文:1篇
    • 评论:151条