node.js文件操作系统实例详解

2020-06-17 05:35:11易采站长站整理

fs.write(fd, buffer, offset, length[, position], callback) fs.write(fd, data[, position[, encoding]], callback) fs.writeSync(fd, buffer, offset, length[, position]) fs.writeSync(fd, data[, position[, encoding]])

fd:写入的文件句柄。
buffer:写入的内容。
offset:将buffer从offset位置开始,长度为length的内容写入。
length:写入的buffer内容的长度。
position:从打开文件的position处写入。
callback:参数为 (err, written, buffer)。written表示有xx字节的buffer被写入。

备注:fs.write(fd, buffer, offset, length[, position], callback)跟fs.write(fd, data[, position[, encoding]], callback)的区别在于:后面的只能把所有的data写入,而前面的可以写入指定的data子串?

文件是否存在

fs.exists()已经是deprecated状态,现在可以通过下面代码判断文件是否存在。


var fs = require('fs');
fs.access('./fileForRead.txt', function(err){
if(err) throw err;
console.log('fileForRead.txt存在');
});
fs.access('./fileForRead2.txt', function(err){
if(err) throw err;
console.log('fileForRead2.txt存在');
});

fs.access()除了判断文件是否存在(默认模式),还可以用来判断文件的权限。

备忘:fs.constants.F_OK等常量无法获取(node v6.1,mac 10.11.4下,fs.constants是undefined)

创建目录

异步版本(如果目录已存在,会报错)


var fs = require('fs');
fs.mkdir('./hello', function(err){
if(err) throw err;
console.log('目录创建成功');
});

同步版本


var fs = require('fs');
fs.mkdirSync('./hello');

删除文件


var fs = require('fs');
fs.unlink('./fileForUnlink.txt', function(err){
if(err) throw err;
console.log('文件删除成功');
});
var fs = require('fs');
fs.unlinkSync('./fileForUnlink.txt');

创建目录


// fs.mkdir(path[, mode], callback)
var fs = require('fs');
fs.mkdir('sub', function(err){
if(err) throw err;
console.log('创建目录成功');
});
// fs.mkdirSync(path[, mode])
var fs = require('fs');
try{
fs.mkdirSync('hello');
console.log('创建目录成功');
}catch(e){
throw e;
}

遍历目录

同步版本,注意:fs.readdirSync()只会读一层,所以需要判断文件类型是否目录,如果是,则进行递归遍历。


// fs.readdirSync(path[, options])
var fs = require('fs');