nodejs-操作文件系统读取写入文件
2016-10-24 13:11
429 查看
我们通过fs这个模块来对文件系统进行操作,对于文件系统操作一般都有同步、异步方法,两者区别,同步等有返回结果时候,在继续执行后面的代码,异步是不等返回结果,直接执行后面的代码,待有返回结果时候,通过回调函数来做出处理。一般同步方法函数名在异步方法名字后面加Sync,如异步读取文件readFile,同步读取文件为readFileSync,大多数情况用异步方法、但是读取配置文件要用同步方法。
readFileSync(path,[options])
readFile(path,[options],function(err,data){});
var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
if(err){
console.log("bad")
}else{
console.log("ok");
console.log(data);
console.log(data.toString());
}
})
若我们异步读取两个文件,那么这两个文件的结果谁先返回,我们是不知道的,这得看文件大小,所以我们要想有先后顺序的读取,那么得在回调函数中写读取第二个文件
var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
if(err){
console.log("bad")
}else{
console.log("读取第一个文件成功");
console.log(data.toString());
fs.readFile('../file2.txt','utf-8',function(err,data){
if(err){
console.log("读取第二个文件失败");
}
if(data){
console.log("读取第2个文件成功");
console.log(data);
}
})
}
})
options
flag:文件的操作情况,r表示这个文件只读,w表示写入文件,a追加文件(常用的三个)
encoding:读取文件用的编码,utf-8,base64,ascii我们不指定编码,那么返回的data为一个buffer
var fs= require("fs");
fs.readFile('../file.txt',{flag:'r+',encoding:'utf-8'},function(err,data){
if(err){
console.log("bad")
}else{
console.log("读取第一个文件成功");
console.log(data);
fs.readFile('../file2.txt','utf-8',function(err,data){
if(err){
console.log("读取第二个文件失败");
}
if(data){
console.log("读取第2个文件成功");
console.log(data);
}
})
}
})
writeFile(filename,data,[options],callback)
wrtieFileSync(filename,data,[options])
filename:要写入的文件
data:写入文件的数据可以是字符串,可以是buffer
options:flag:对写入文件的操作默认为w,encoding:编码,mode:权限
callback:回调函数
var fs = require("fs");
var data="宋茂林是好人";
fs.writeFile('./wfile.txt',data,{flag:'w',encoding:'utf-8',mode:'0666'},function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件写入成功");
}
})
该文件是程序创建的 原本没有
var fs = require("fs");
var data="宋茂林是好人-追加";
fs.writeFile('./wfile.txt',data,{flag:'a',encoding:'utf-8',mode:'0666'},function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件追加成功");
}
})
readFile 、writeFile 同时使用
读取一张图片,之后写入到另一张图片
var fs =require("fs");
fs.readFile('./1.png','base64',function(err,data){
if(err){
console.log("取图片1失败");
}else{
fs.writeFile('./2.png',data,'base64',function(err){
console.log("图片2写入成功");
})
}
})
writeFile(filename,data,{flag:'a'},callback)与appendFile一致
var fs = require("fs");
var data="宋茂林是好人-追加appendFile";
fs.appendFile('./wfile.txt',data,function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件追加成功");
}
})
从指定位置开始读取文件
fs.open fs.read结合实现从指定位置读取文件
fs.open(filename,options,[mode],callback)
callback(err,fd)
var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
if(err){
console.log("打开失败");
}else{
console.log(fd);
}
})
fs.read(fd,buffer,offset,length,pasition,callback)
fd:ope方发返回的文件描述符号
buffer:读取的文件写到那个缓存区中
offset:从缓存区中那个字节开始写入
length:写入多长的字节,
pasitong:文件指定位置处开始写入缓存区
var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
if(err){
console.log("打开失败");
}else{
var buf=new Buffer(128);
console.log(buf)
fs.read(fd,buf,1,30,0,function(err,bytesRead,buf){
if(err){
console.log("指定位置读取文件失败");
}else{
console.log(bytesRead);
console.log(buf);
}
})
}
})
var bytesRead=readSync(fd,buffer,offset,length,position)
指定位置写数据
fs.open()yu sf.write(fd,buffer,offset,length,position, callback)
var fs=require("fs");
//这是追加 ‘w’ 是替换原来的文件内容
fs.open('./wfile.txt','a','0666',function(err,fd){
if(err){
console.log("打开文件失败");
}else{
var buffer=new Buffer("小鸟");
console.log(buffer.length);
fs.write(fd,buffer,0,buffer.length,0,function(err,written,buffer){
if(err){
console.log("指定位置写入文件失败");
}else{
console.log(written);
console.log(buffer.toString());
}
})
fs.fsync(fd);
fs.close(fd);
}
})
fs.fsync(fd)该方法吧缓存区的数据同步到文件中
fs.close(fd)关闭文件
readFileSync(path,[options])
readFile(path,[options],function(err,data){});
var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
if(err){
console.log("bad")
}else{
console.log("ok");
console.log(data);
console.log(data.toString());
}
})
若我们异步读取两个文件,那么这两个文件的结果谁先返回,我们是不知道的,这得看文件大小,所以我们要想有先后顺序的读取,那么得在回调函数中写读取第二个文件
var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
if(err){
console.log("bad")
}else{
console.log("读取第一个文件成功");
console.log(data.toString());
fs.readFile('../file2.txt','utf-8',function(err,data){
if(err){
console.log("读取第二个文件失败");
}
if(data){
console.log("读取第2个文件成功");
console.log(data);
}
})
}
})
options
flag:文件的操作情况,r表示这个文件只读,w表示写入文件,a追加文件(常用的三个)
encoding:读取文件用的编码,utf-8,base64,ascii我们不指定编码,那么返回的data为一个buffer
var fs= require("fs");
fs.readFile('../file.txt',{flag:'r+',encoding:'utf-8'},function(err,data){
if(err){
console.log("bad")
}else{
console.log("读取第一个文件成功");
console.log(data);
fs.readFile('../file2.txt','utf-8',function(err,data){
if(err){
console.log("读取第二个文件失败");
}
if(data){
console.log("读取第2个文件成功");
console.log(data);
}
})
}
})
writeFile(filename,data,[options],callback)
wrtieFileSync(filename,data,[options])
filename:要写入的文件
data:写入文件的数据可以是字符串,可以是buffer
options:flag:对写入文件的操作默认为w,encoding:编码,mode:权限
callback:回调函数
var fs = require("fs");
var data="宋茂林是好人";
fs.writeFile('./wfile.txt',data,{flag:'w',encoding:'utf-8',mode:'0666'},function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件写入成功");
}
})
该文件是程序创建的 原本没有
var fs = require("fs");
var data="宋茂林是好人-追加";
fs.writeFile('./wfile.txt',data,{flag:'a',encoding:'utf-8',mode:'0666'},function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件追加成功");
}
})
readFile 、writeFile 同时使用
读取一张图片,之后写入到另一张图片
var fs =require("fs");
fs.readFile('./1.png','base64',function(err,data){
if(err){
console.log("取图片1失败");
}else{
fs.writeFile('./2.png',data,'base64',function(err){
console.log("图片2写入成功");
})
}
})
writeFile(filename,data,{flag:'a'},callback)与appendFile一致
var fs = require("fs");
var data="宋茂林是好人-追加appendFile";
fs.appendFile('./wfile.txt',data,function(err){
if(err){
console.log("文件写入失败")
}else{
console.log("文件追加成功");
}
})
从指定位置开始读取文件
fs.open fs.read结合实现从指定位置读取文件
fs.open(filename,options,[mode],callback)
callback(err,fd)
var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
if(err){
console.log("打开失败");
}else{
console.log(fd);
}
})
fs.read(fd,buffer,offset,length,pasition,callback)
fd:ope方发返回的文件描述符号
buffer:读取的文件写到那个缓存区中
offset:从缓存区中那个字节开始写入
length:写入多长的字节,
pasitong:文件指定位置处开始写入缓存区
var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
if(err){
console.log("打开失败");
}else{
var buf=new Buffer(128);
console.log(buf)
fs.read(fd,buf,1,30,0,function(err,bytesRead,buf){
if(err){
console.log("指定位置读取文件失败");
}else{
console.log(bytesRead);
console.log(buf);
}
})
}
})
var bytesRead=readSync(fd,buffer,offset,length,position)
指定位置写数据
fs.open()yu sf.write(fd,buffer,offset,length,position, callback)
var fs=require("fs");
//这是追加 ‘w’ 是替换原来的文件内容
fs.open('./wfile.txt','a','0666',function(err,fd){
if(err){
console.log("打开文件失败");
}else{
var buffer=new Buffer("小鸟");
console.log(buffer.length);
fs.write(fd,buffer,0,buffer.length,0,function(err,written,buffer){
if(err){
console.log("指定位置写入文件失败");
}else{
console.log(written);
console.log(buffer.toString());
}
})
fs.fsync(fd);
fs.close(fd);
}
})
fs.fsync(fd)该方法吧缓存区的数据同步到文件中
fs.close(fd)关闭文件
相关文章推荐
- Hadoop文件系统操作之读取写入数据
- nodejs-操作文件系统创建读取目录
- Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 用PHP脚本在Linux系统上读取输入和对文件进行操作
- Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- C#中的文件操作(读取文件与写入文件)
- 日志文件操作(写入,读取,清空)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Java文件操作:按行读取和写入
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Java实现文件的读取、写入、复制、修改、移动等操作
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)