NodeJS File System-文件系统模块
2018-06-30 本文已影响3人
走停2015_iOS开发
该模块是核心模块,需要使用require导入后使用
-
异步
打开一个文件
fs模块
fs.open(path,flag,[mode],callback) 异步打开一个文件
path:要打开文件的路径
flags:打开文件的方式 读/写
mode:设置文件的模式 读/写/执行 4/2/1
callback:回调
err:文件打开失败的错误保存在err里面,如果失败err为null
fd:被打开文件的标识,和定时器
var fs = require('fs');
fs.open('1.js','r',function(err,fd)
console.log(err);
console.log(fd);
});
-------------打印---------------------------------------------------
{ Error: ENOENT: no such file or directory,
// open '2.js' errno: -2, code: 'ENOENT', syscall: 'open', path: '2.js' }
fs.open('1.js','r',function(err,fd){
console.log(err);
console.log(fd);
});
console.log('ok');
-------------打印---------------------------------------------------
11
ok
-
同步
打开一个文件
fs.openSync(path,flag,[mode]) 同步打开一个文件
var fs = require('fs');
var fd = fs.openSync('1.js','r');
console.log(fd);
console.log('ok');
-------------打印---------------------------------------------------
11
ok
- fs模块读取文件内容
var fs = require('fs');
fs.open('1.js','r',function(err,fd){
if(!err)
{
//读取文件
//fs.read(fd,buffer,offset,length,position,callback)
//fs:通过open打开文件返回的编号
//buffer:打开文件的数据存放在这里
//offset:新的内容添加到buffer中的起始位置
//length:添加到buffer的内容的长度
//position:读取文件中的起始位置
//callback:回调
// err:
// len:
// newbf:
var bf1 = new Buffer('123456789');
console.log(bf1);
fs.read(fd,bf1,0,4,null,function(err,len,newbf){
console.log(bf1);
console.log(newbf);
console.log(len);
});
}
});
-------------打印---------------------------------------------------
//<Buffer 31 32 33 34 35 36 37 38 39>
//<Buffer 2f 2a 2a 0a 35 36 37 38 39>
//<Buffer 2f 2a 2a 0a 35 36 37 38 39>
//4
- fs模块写入文件内容
var fs = require('fs');
fs.open('2.js','r+',function(err,fd){
// fs.write(fd,buffer,offset,length,position,callback)
//fs.writeSync(fd,buffer,offset,length,position,callback)
//fs:通过open打开文件返回的编号
//buffer:要写入的数据
//offset:buffer中的写入的数据的起始位置
//length:要写入的buffer的内容的长度
//position:读取文件中的起始位置
//callback:回调
// err:
// len:
// newbf:
if(!err) {
var bf = new Buffer('1234');
fs.write(fd, bf, 0, 4, 0, function () {
console.log(arguments);
//{ '0': null, '1': 4, '2': <Buffer 31 32 33 34> }
});
}
})
var fs = require('fs');
fs.open('2.js','r+',function(err,fd){
// fs.write(fd,position,[encoding])
//fs:通过open打开文件返回的编号
// encoding:编码
//position:读取文件中的起始位置
if(!err) {
fs.write(fd,'1234', 0,'utf-8',function(){
} );
}
}
F41E8173-66A8-4755-B39D-384A676CF3C5.png
A40F4A4D-AE26-4F67-B48C-9DD8C67BA0AC.png
- 关闭文件
fs.close(fd,function(){
});
- 写文件
- writeFile
- writeFileSync
var fs = require('fs');
var fileName = "3.js";
//向一个文件中写入数据,如果该文件不存在就创建,如果存在,新的内容会覆盖原有的内容
fs.writeFile(fileName,'miaov',function()
{
console.log(arguments);
});
//appendFile:如果该文件不存在就创建
fs.appendFile(fileName,'leo',function(){
console.log(arguments);
});
例子如下
var fs = require('fs');
var fileName = "3.js";
fs.exists(fileName,function(isExists){
if(!isExists){
fs.writeFile(fileName,'miaov',function(err){
if(err){
console.log('出错了');
}else
{
console.log('创建新文件成功,并且写入了内容');
}
});
}else
{
fs.appendFile(fileName,'-cheshi-',function(err){
if(err)
{
console.log('新的内容追加失败');
}else
{
console.log('新的内容追加成功');
}
});
}
});
- 文件读取
var fs = require('fs');
fs.readFile('2.js',function(err,data){
console.log(arguments);
console.log(data.toString());
});
- 文件删除
var fs = require('fs');
fs.unlink('2.js',function(err){
});
- 文件重命名
var fs = require('fs');
fs.rename('3.js','2.new.js',function()
{
console.log(arguments);
});
- 返回文件信息
var fs = require('fs');
fs.stat('2.new.js',function()
{
console.log(arguments);
});
-------------打印---------------------------------------------------
{ '0': null,
'1':
Stats {
dev: 16777221,
mode: 33188,
nlink: 1,
uid: 501,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 49454047,
size: 27,
blocks: 8,
atimeMs: 1530340151000,
mtimeMs: 1530333980000,
ctimeMs: 1530333980000,
birthtimeMs: 1530333921000,
atime: 2018-06-30T06:29:11.000Z,
mtime: 2018-06-30T04:46:20.000Z,
ctime: 2018-06-30T04:46:20.000Z,
birthtime: 2018-06-30T04:45:21.000Z } }
- 创建和删除文件夹
//fs.mkdir(path,[mode],callback)
var fs = require('fs');
fs.mkdir('./1',function(err){
console.log(arguments);
});
fs.rmdir('./1',function(err){
});
- 读取文件夹信息
fs.readdir('../Lib',function(err,filelist){
console.log(err);
//console.log(filelist);
filelist.forEach(function(f){
fs.stat(f,function(err,info){
console.log(arguments);
if(info.mode == 16822)
{
console.log('文件夹');
}else if(info.model =33206)
{
console.log('文件');
}
});
});
});