file.open:异步模式打开文件
fs.open(path, flags[, mode], callback)
案例代码如下:
var fs = require('fs');/** * 参数说明: * 1.path:要打开的文件的文件路径 * 2.flags:打开文件的方式 读/写 * r:只读方式打开文件,如果文件不存在会抛出异常 * r+:读写模式打开文件,如果文件不存在会抛出异常 * rs:以同步只读的方式打开文件,如果文件不存在会抛出异常 * rs+:以同步读写的方式打开文件,如果文件不存在会抛出异常 * w:以写文件的模式打开文件,如果文件不存在则创建文件,如果存在则清空文件 * wx:以写的模式打开文件,如果文件不存在则创建文件,如果存在抛出异常 * w+:以读写文件的模式打开文件,如果文件不存在则创建文件,如果存在则清空文件 * wx+:以读写的模式打开文件,如果文件不存在则创建文件,如果存在抛出异常 * a:追加模式打开文件,如果不存在则创建文件 * a+:读写和追加模式打开文件,如果不存在则创建文件 * ax:追加模式打开文件,如果存在抛出异常 * ax+:读写和追加模式打开文件,如果存在抛出异常 * * 3.mode:设置文件的模式,读写执行(4-2-1) * 4.callback:打开文件的回调函数 * function(err,fd){ * //err:文件打开失败的错误信息,如果成功则为null * //fd:被打开文件的标识 * } */fs.open('test.txst','wx',function(err,fd){ console.info(err); if(err){ console.info('文件打开失败...'); }else{ console.info('文件打开成功...'); }});
fs.openSync:同步模式打开文件
fs.openSync(path, flags[, mode])
具体参数用法请参考open方法。
案例代码如下:
var fs = require('fs');var fd =fs.openSync('test.txt', 'r');console.info(fd);
fs.read:异步读取一个打开的文件
fs.read(fd, buffer, offset, length, position, callback)
具体参数用法请参考open方法。
案例代码如下:
var fs = require('fs');fs.open('test.txt','r',function(err,fd){ if(err){ console.info('文件打开失败...'); }else{ /** * 读取文件 * * fs.read(fd, buffer, offset, length, position, callback) * 1.fd:通过open方法成功打开的一个文件的返回句柄 * 2.buffer:用于存放读取内容的buffer对象 * 3.offset:新的内容添加到buffer中的起始位置 * 4.length:添加到buffer中的内容长度 * 5.position:读取的文件中的起始位置 * 6.callback:读取文件的回调函数 * function(err, bytesRead, buffer){ * //err:错误信息 * //bytesRead:读取的内容在buffer中的长度 * //buffer:buffer对象 * } * @type {Buffer} */ var bf = new Buffer(10); fs.read(fd,bf,0,4,null,function(err, bytesRead, buffer){ console.info(err); // null or some error console.info(bytesRead); // 4 console.info(buffer); //buffer content }); }});
fs.readSync:同步模式读取打开的文件
fs.readSync(fd, buffer, offset, length, position)
该方法以同步模式读取打开的文件,并且返回了从文件中读取的内容的长度。具体参数用法请参考read方法。
案例代码如下:
var fs = require('fs');var bf = new Buffer(10);var fd =fs.openSync('test.txt', 'r');var len = fs.readSync(fd,bf,0,4,null);console.info(len); // 4console.info(bf); // buffer content
fs.rename:异步模式对文件或者文件夹重命名
fs.rename(oldPath, newPath, callback)
对文件或者文件夹进行重命名操作
案例代码如下:
var fs = require('fs');/** * 对文件或者文件夹进行重命名操作 * * fs.rename(oldPath, newPath, callback) * * 1.oldPath:要进行重命名的文件 * 2.newPath:要重命名的文件名称 * 3.callback:重命名的回调函数 * function(err){ * //err:错误信息 * } * */fs.rename('./srcFile.txt','./destFile.text',function(err){ console.info(err);});
注意点
- 当源文件不存在的时候回报错
- 当新的文件名称已存在会导致原来的那个文件丢失,不会报错!!!!
fs.renameSync:同步模式对文件或者文件夹进行重命名
fs.renameSync(oldPath, newPath)
该方法以同步模式对文件或者文件夹进行了重命名,返回值为undefined。具体参数用法请参考rename方法。
案例代码如下:
var fs = require('fs');fs.renameSync('./srcFile.txt','./destFile.text');
fs.stat:异步模式获取文件信息
fs.stat(path, callback)
该方法主要用来获取文件或者文件夹的信息,包括一些类型、时间相管的信息、文件大小等。
案例代码如下:
var fs = require('fs');fs.stat('./src',function(err,stats){ /** * * stats.mode: * On Win32: * 16895 for a dir and 33206 for a file. * On Linux: * 16877 for a dir, 33188 for a file * */ console.info("设备名:" + stats.dev); console.info("类型:" + stats.mode); //33188-文件、16877-文件夹 console.info("被连接数目:" + stats.nlink); console.info("所有者的用户id:" + stats.uid); console.info("所有者的组id:" + stats.gid); console.info("设备类型:" + stats.rdev); console.info("文件系统 IO 的块大小:" + stats.blksize); console.info("号码:" + stats.ino); console.info("大小:" + stats.size); console.info("所占据块的数目:" + stats.blocks); console.info("上次访问时间:" + stats.atime); console.info("上次修改时间:" + stats.mtime); console.info("上次改变时间:" + stats.ctime); console.info("创建时间:" + stats.birthtime);});
fs.statSync:同步模式获取文件信息
fs.statSync(path)
该方法以同步模式获取文件或者文件夹信息,返回一个stats对象。具体参数用法请参考stat方法。
案例代码如下:
var fs = require('fs');var stats = fs.statSync('./src');console.info("设备名:" + stats.dev);console.info("类型:" + stats.mode); //33188-文件、16877-文件夹console.info("被连接数目:" + stats.nlink);console.info("所有者的用户id:" + stats.uid);console.info("所有者的组id:" + stats.gid);console.info("设备类型:" + stats.rdev);console.info("文件系统 IO 的块大小:" + stats.blksize);console.info("号码:" + stats.ino);console.info("大小:" + stats.size);console.info("所占据块的数目:" + stats.blocks);console.info("上次访问时间:" + stats.atime);console.info("上次修改时间:" + stats.mtime);console.info("上次改变时间:" + stats.ctime);console.info("创建时间:" + stats.birthtime);