nodejs 文件操作

引入文件系统模块:

var fs = require("fs");

使用readFile和writeFile进行操作:

读取文件内容:



exports.t1=function(){
	console.log("开始读取文件!");
	fs.readFile("./hello.js",function(err,data){
		if(err){
			return console.log(err);
		}
		console.log(data.toString());
	});
	//异步处理
	
	var data=fs.readFileSync("./hello.js");
	console.log(data.toString());
	console.log("文件读取结束!");
	//同步处理
}
复制文件内容:
exports.copy1=function(){
	fs.readFile("./hello.js",function(err,data){
		if(err){
			return console.log(err);
		}
		fs.writeFile("./hello_c.js",data);
	});
	
}
使用open,read,write进行操作:
exports.t2 = function() {
	var buf = new Buffer(1024);
	fs.open("./hello.js", "r", function(err, fd) {
		if(err) {
			return console.log(err);
		}
		fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {
			if(err) {
				return console.log(err);
			}
			console.log("一共读取了" + bytes + "字节");
			console.log(buf.slice(0, bytes).toString());
		});

		fs.close(fd, function(err) {
			if(err) {
				return console.log(err);
			}

		});
	});
}
exports.copy2 = function() {
	var buf = new Buffer(1024);
	fs.open("./hello.js", "r", function(err, rd) {
		if(err) {
			return console.log(err);
		}

		fs.read(rd, buf, 0, buf.length, 0, function(err, bytes) {
			if(err) {
				return console.log(err);
			}
			fs.open("./hello_c.js", "w", function(err, wd) {
				if(err) {
					return console.log(err);
				}
				fs.write(wd,buf,0,bytes,function(err,written,buffer){
					fs.close(wd, function(err) {
						if(err) {
							return console.log(err);
						}
					});
					console.log(written);
					if(err) {
							return console.log(err);
					}
				});
				
			});
		});

		fs.close(rd, function(err) {
			if(err) {
				return console.log(err);
			}
		});
	});
}
使用事件循环进行操作:
exports.copy3=function(){
	var buf = new Buffer(1024);
	var eventEmitter=new event.EventEmitter();
	eventEmitter.on("copy.star",function(){
		fs.open('./hello.js','r',function(err,rd){
			if(err){
				return console.log(err);
			}	
			eventEmitter.emit("copy.read",rd);
		});
	}).on("copy.read",function(rd){
		fs.read(rd,buf,0,buf.length,0,function(err,bytes){
			fs.close(rd,function(err){
				if(err){
					return console.log(err);
				}
			});
			if(err){
				return console.log(err);
			}
			eventEmitter.emit("copy.write",bytes);
		});
	}).on("copy.write",function(bytes){
		fs.open("./hello_c.js","w",function(err,wd){
			if(err){
				return console.log(err);
			}
			fs.write(wd,buf,0,bytes,function(err,writen,buffer){
				fs.close(wd,function(err){
					if(err){
						return console.log(err);
					}
				});
				if(err){
						return console.log(err);
				}
			});
		});
	}).emit("copy.star");	
}
当复制内容超过规定的数值的时候,就会出错,所以可以使用createReadStream,createWriteStream方法。

exports.t3=function(){
	var read=fs.createReadStream("./hello.js");
	read.on("data",function(data){
		console.log(data.toString());
	});
	read.on("end",function(){
		console.log("文件读取结束!");
	})
}
exports.copy4=function(){
	var read=fs.createReadStream("./hello.js");
	var write=fs.createWriteStream("./hello_c.js");
	read.on("data",function(data){
		write.write(data);
	});
	read.on("end",function(){
		write.end()
	});
	read.on("error",function(err){
		 console.log(err);
	})
}	
最简单的方法,使用管道:
exports.copy5=function(){
	var read=fs.createReadStream("./hello.js");
	var write=fs.createWriteStream("./hello_c.js");
	read.pipe(write);
}
nodejs 的文件系统API






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值