【node.js学习】--(3)--读写文件
读写文件
一般读写
新建copyFile.js
var fs = require("fs");
function copyFile(src,dest){
varfile = fs.readFileSync(src);//根据文件路劲读取文件
fs.writeFileSync(dest,file);//将内容写入文件
}
function main(argv){
copyFile(argv[0],argv[1]);
}
main(process.argv.slice(2));//接受命令参数
执行拷贝:node copyFile “./in.txt” “./out.txt”
运行效果:
将in.txt拷贝为out.txt
管道读写
修改copyFile函数的内容为:
fs.createReadStream(src).pipe(fs.createWriteStream(dest));
管道连接了输入输出流,可以实现大文件拷贝。
遍历文件夹
同步遍历
新建travelDir.js
var fs = require("fs");
var path = require("path");
function travel(dir, callback) {
fs.readdirSync(dir).forEach(function (file) {
var pathname = path.join(dir, file);//拼接子路径
if (fs.statSync(pathname).isDirectory()) {//判断是否是文件夹
travel(pathname, callback);
} else {
callback(pathname);
}
});
}
function printDir(argv){
travel(argv[0],function (pathname) {
console.log(pathname);
});
}
printDir(process.argv.slice(2));
对文件结构为:
testTravelDir/
└── fathers
├── childs
│ ├── child01.txt
│ └── child02.txt
└──father01.txt
2 directories, 3 files
的目录,遍历结果为:
异步遍历
略
字符编码
略
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
API相关文档
官方文档:http://nodejs.org/api/buffer.html
Buffer(数据块)
字符串和二进制互操作
Stream(数据流)
.on(...);
.end();
.pause();
.resume();
File System(文件系统)
文件属性读写:
fs.stat
fs.chmod
fs.chown
文件内容读写:
fs.readFile
fs.readdir
fs.writeFile
fs.mkdir
底层文件操作:
fs.open
fs.read
fs.write
fs.close
Path(路径)
.normalize
.join
.extname
参考http://www.nodewhy.com/post/15