node.js学习笔记之文件读写操作
2017-07-27 09:06
751 查看
/* *文件的完整读写 * * readFile(path,[options],callback) 异步读写文件 * 参数:1、需要读取的文件名及路径(必填) * 2、options为一个对象,指定读取文件时需要使用的选项,在该参数值中可以使用flag属性指定对文件的操作。默认为“r”。 * 也可以使用encoding属性来指定使用何种编码格式读取文件 * 3、回调函数function(err,data){ * //err:读取文件失败时触发的错误对象 * //data:读取到的文件内容 * } * readFileSync(path,options) 同步读取文件 */ /*使用readFile方式读取文件*/ var fs = require('fs'); fs.readFile('./test.txt','utf8',function (err,data) { if(err){ console.log('文件读取发生错误'); }else{ //如果不写utf参数,下面可以这样写 //console.log(data.toString()); console.log(data); } }) /*使用readFileSync读取文件*/ var fs = require('fs'); try{ var data =fs.readFileSync('./test.txt','utf8'); console.log(data); }catch (ex){ console.log('文件读取发生错误'); } /* *writeFile(path,data,[options],callback) 异步写文件方法 * 参数同上,其中data为需要写入的数据 *writeFileSync(path,data,options) 同步写文件方法 */ /*使用writeFile完整写入文件*/ var fs = require('fs'); fs.writeFile('./message.txt','这是第一行。\r\n这是第二行',function (err) { if(err) console.log('写文件操作失败\n'); else console.log('写文件操作成功'); }); /*将缓存区中的数据写入到文件中*/ var fs = require('fs'); var data = new Buffer('我喜欢编程'); fs.writeFile('./message.txt',data,function (err) { //message.txt为当前目录下的一个.txt文件 if(err) console.log('写文件操作失败\n'); else console.log('写文件操作成功\n'); }) /*使用writeFile方法追加数据*/ var fs = require('fs'); var options={ flag:'a' } fs.writeFile('./message.txt','这是追加的数据',options,function (err) { if(err) console.log('写文件操作失败\n'); else console.log('写文件操作成功\n'); }) /*使用writeFile方法复制图片文件*/ var fs = require('fs'); fs.readFile('./a.jpg','base64',function (err, data) { fs.writeFile('./b.jpg',data,'base64',function (err) { if(err) console.log('写文件操作失败\n'); else console.log('写文件操作成功\n'); }) }); /*使用同步方式写文件*/ var fs = require('fs'); try{ fs.writeFileSync('./message.txt','这是第一行。\r\n这是第二行'); }catch (ex){ console.log('文件写入发生错误'); } /* * 追加文件 * appendFile(path,data,[options],callback) 异步追加文件 * appendFileSync(path,data,[options]) 同步追加文件 * */ /*异步方式追加文件*/ var fs = require('fs'); fs.appendFile('./message.txt','这是第二个追加的数据','utf8',function (err) { if(err) console.log('追加文件操作失败\n'); else console.log('追加文件操作成功\n'); }) /*同步方式追加文件*/ var fs = require('fs'); try{ fs.appendFileSync('./message.txt','这是第三行追加的数据','utf8'); }catch (ex){ console.log('文件写入发生错误'); } /* * *打开文件方法: * fs.open(path,flags,[mode],callback) 异步打开文件 * 其中mode为可选参数 * 回调函数:function(err,fd){ * //err:读取文件失败时触发的错误对象 * //fd为一个整数,表示打开文件的描述符 * } * fs.open(path,flags,[mode]) 同步打开文件 * * */ /*使用open打开文件实例*/ var fs = require('fs'); fs.open('./test.txt','r',function (err, fd) { //其中“r”为打开文件的方式 console.log(fd); }); /* * 从指定位置开始读写文件 * fs.read(fd,buffer,offset,length,position,callback) 异步读文件 * 参数:fd:一个整数,必须为open或openSync方法打开文件时所返回的文件描述符 * buffer:Buffer对象,用于指定将文件数据读取到那个缓冲区 * offset:整数。指定向缓冲区写入数据的开始位置 * length:整数。指定从文件中读取的字节数 * position:整数。用于指定读取文件的开始位置 * callback:回调函数。function(err,byteRead,buffer){ * //err:操作失败时所触发的错误对象 * //byteRead:整数。读取到的字节数 * //被读取的缓冲区对象 * } * fs.read(fd,buffer,offset,length,position) 同步读文件 * 参数同上 * */ /*read方法使用示例*/ var fs = require('fs'); fs.open('./message.txt','r',function (err, fd) { //message.txt内容为:我喜爱编程 var buf = new Buffer(255); //一个汉字的utf编码为三个字节数据 fs.read(fd,buf,0,9,3,function (err, byteRead, buffer) { console.log(buffer.slice(0,byteRead).toString())//输出:喜爱编 }) //如果position为null时,从文件的当前读取位置(前一次读取开始位置+读取的字节数)继续向下读取 fs.read(fd,buf,0,3,null,function (err, byteRead, buffer) { console.log(buffer.slice(0,byteRead).toString())//输出:程 }) }) /*从文件的当前被读取位置读取文件*/ var fs = require('fs'); fs.open('./message.txt','r','utf8',function (err, fd) { var buf = new Buffer(255); fs.read(fd,buf,0,) }) /* * 从指定位置写入文件 * fs.write(fd,buffer,offset,length,position,callback) 异步写文件 * 参数同上,不同是buffer为指定从那个缓冲区读取数据写入文件 * fs.writeSync(fd,buffer,offset,length,position) 同步写文件 * */ /*write方法使用示例*/ var fs = require('fs'); var buf = new Buffer('我喜爱编程'); fs.open('./test.txt','w',function (err, fd) { fs.write(fd,buf,3,9,0,function (err,byteWrite,buffer) { //向文件中写入 喜爱编 fs.write(fd,buf,12,3,null,function (err, byteWrite, buffer) { //向文件中写入 程 if(err) console.log('写文件操作失败'); else console.log('写文件操作成功'); }) }); }) /* * 关闭文件 * fs.close(fd,[callback]) 异步关闭文件 * callback为可选参数,作为关闭文件操作结束时的回调函数 * fs.closeSync(fd) 同步关闭文件 * * 注意:在写文件时,操作系统做法是首先将部分数据读到内存中,再把数据写入文件中,当数据读完时并不代表数据已经写完。 * 这是如果调用close或者closeSync函数,那么就会有部分数据丢失,我们可以调用fs模块中的fsync方法对文件进行同步操作, * 即将内存缓冲区中的数据全部写入文件。 * fs.fsync(fd,[callback]) * */ /*使用fsync方法确保文件全部写入*/ var fs = require('fs'); var buf = new Buffer('我喜爱编程'); fs.open('./test.txt','w',function (err, fd) { fs.write(fd,buf,0,15,0,function (err,byteWrite,buffer) { if(err) console.log('写文件操作失败'); else console.log('写文件操作成功'); fs.fsync(fd); fs.close(fd); }); })
相关文章推荐
- Node.js学习笔记(5)--文件简单操作
- Node.js 学习笔记(1) 文件操作
- node.js学习笔记(二)--使用mongoose简单的CRUD操作及测试模块mocha的使用
- Node.js学习笔记7-文件系统
- node.js 学习笔记四:读取文件
- node.js学习笔记(8)--multer模块文件上传
- node.js学习笔记之写文件
- node.js学习笔记之写文件
- node.js在windows下的学习笔记(9)---文件I/O模块
- 从零学习node.js之文件操作(三)
- node 学习笔记 - fs 文件操作
- node.js学习笔记之使用文件流
- Node.js学习笔记(8、配置文件package.json)
- node 学习笔记 - fs 文件操作
- MongoDB学习笔记(五) MongoDB文件存取操作
- Shell脚本学习笔记(十)--文件操作
- 【学习笔记】Linux平台的文件,目录及操作
- C#学习笔记21——文件、目录、注册表操作
- php学习笔记之文件操作
- [Linux学习笔记]第1天:操作系统的发展史,linux诞生,Linux发行商,shell,terminal,shell使用技巧,文件目录,基本操作