NODEJS-fs模块操作文件系统
使用 fs模块 对文件/目录进行操作
读取文件内容
// fs.readFile(filename, [options], callback)
// options 中的 flag 默认为 r,表示读取文件
fs.readFile('test.txt', function (err, data) {
if(err) throw err;
console.log('文件内容是:', data);
})
// fs.readFileSync(filename, [options])
// 同步方式读取
try {
var data = fs.readFileSync('test.txt');
console.log('文件内容是:', data);
} catch (err) {
throw err;
}
options 中的 flag 取值:r/r+/rs/w/wx/w+/wx+/a/ax/a+/ax+
options 中的 encoding 取值:utf8/ascii/base64
写入文件内容
// fs.writeFile(filename, data, [options], callback)
// options 中的 flag 默认为 w,表示写入文件,mode 默认为 0666(可读写的读写权限)
fs.writeFile('test.txt', '我是被写入的内容', function (err) {
if (err) throw err;
console.log('成功写入.')
}) // 同步方式写入
fs.writeFile(filename, data, [options]) // 将 data 添加到文件底部, flag 默认为 a
fs.appendFile(filename, data, [options], callback)
// 同步方式添加
fs.appendFileSync(filename, data, [options])
options 中的 flag 和 encoding 与上同。
options 中的 mode 为表示读写权限的数字,默认为 0666 可读写
写入的 data 可以是一个 Buffer
在指定位置读写文件
fs.open(filename, flags, [mode], function (err, fd){
// 读
fs.read(fd, buffer, offset, length, position, function(err, bytesRead, buffer){})
// 写
fs.write(fd, buffer, offset, length, position, function(err, written, buffer){})
// 关闭
fs.close(fd)
})
创建目录
// fs.mkdir(path, [mode], callback)
// mode 默认为 0777,表示可读可写
fs.mkdir('./testDir', function (err) {
if (err) {
throw err;
}
console.log('目录创建成功')
})
读取目录
fs.readdir('./testDir', function (err, files) {
if (err) {
console.log('读取目录失败')
}
console.log(files);
})
查看文件/目录信息
// fs.fstat('testDir', function (err, stats) {
fs.stat('testFile.txt', function (err, stats) {
if (err) {
console.log('读取文件信息失败')
}
// stats 是一个 Fs.Stats 对象
console.log(stats); console.log('是否为文件:', stats.isFile);
console.log('是否为目录:', stats.isDictionary);
console.log('读写权限是:', stats.mode);
console.log('文件大小是:', stats.size);
console.log('访问时间是:', stats.atime);
console.log('修改时间是:', stats.mtime);
console.log('创建时间是:', stats.ctime);
})
检查文件/目录是否存在
fs.exists('./testFile.txt', function (exists) {
console.log('testFile.txt是否存在:', exists);
})
获取文件的绝对路径
fs.realpath('./testFile.txt', function (err, resolvedPath) {
if (err) {
throw err;
}
console.log('文件的绝对路径是:', resolvedPath);
})
修改文件时间
// fs.utimes(path, atime, mtime, callback)
fs.utimes('./testFile.txt', new Date(), new Date(), function (err) {
if (err) {
console.log('修改失败')
}
console.log('修改成功');
})
修改文件/目录的读取权限
// fs.chmod(path, mode, callback)
// 0600 表示所有者可读写,其他人不可
fs.chmod('./testFile.txt', 0600, function (err) {
if (err) {
console.log('修改失败');
}
console.log('修改成功');
})
移动/重命名文件
// fs.rename(oldPath, newPath, callback); // oldPath 与 newPath 所在目录相同但文件名不同时,重命名
// oldPath 与 newPath 所在目录不相同时,移动;若文件名不同,则移动后重命名
fs.rename('./testFile.txt', './test/testNewFile.txt', function (err) {
if (err) {
console.log('文件移动失败');
}
console.log('文件移动成功');
})
创建和删除硬连接
新创建的硬连接与旧的硬连接会指向相同文件
删除的硬连接若是最后一个,则删除这个文件
// 创建
// fs.link(srcPath, dstPath, callback);
fs.line('./testFile.txt', './test/testNewFile.txt', function (err) {
if (err) {
console.log('创建硬连接失败');
}
console.log('创建硬连接成功');
})
// 删除
fs.unlink(path, callback);
截断文件
清除文件内容,后修改文件尺寸的操作
fs.truncate(filename, len, callback)
删除空目录
fs.rmdir(path, callback);
监视文件/目录
// fs.watchFile(filename, [options], listener)
// options 中的 interval 指多久检查一次,这里设定了 1小时
fs.watchFile('./testFile.txt', {interval: 60*60*1000}, function (curr, prev) {
if (Date.parse(prev.ctime) == 0) {
console.log('文件被创建');
} else if (Date.parse(curr.ctime) == 0) {
console.log('文件被删除');
} else if (Date.parse(prev.mtime) != Date.parse(curr.mtime)
console.log('文件被修改');
})
})
// 取消监视, 不指定listener则清空所有监视
fs.unwatchFile(filename, [listener])
使用 ReadStream对象 读取文件
// 创建
// fs.createReadStream(path, [options])
// options 可填的key有:flags/encoding/autoClose/start/end
var file = fs.createReadStream('./testFile.txt');
var body = '';
// 监听
file.on('open', function (fd) {
console.log('文件被打开,开始读取...');
});
file.on('data', function (data) {
console.log('正在读取数据...');
body += data;
});
file.on('end', function(){
console.log('文件被读取完毕:');
console.log(body);
});
file.on('close', function () {
console.log('文件已关闭');
})
file.on('error', function (err) {
console.log('文件读取出错');
}) // 手动出发暂停/恢复读取文件
// file.pause();
// file.resume();
使用 WriteStream对象 写入文件
// 创建
// var writable = fs.createWriteStream(path, [options])
// options 可填的key有:flags/encoding/start // writable.write(chunk, [encoding], [callback]) // chunk 可为 Buffer/string // writable.end([chunk], [encoding], [callback])
// 调用end方法结束写入 // 将 file1.txt 的内容写入 file2.txt
var file1 = fs.createReadStream('./file1.txt');
var file2 = fs.creatWriteStream('./file2.txt');
file1.on('data', function (data) {
file2.write(data);
});
file1.on('end', function () {
file2.end(function() {
console.log('文件写入完成');
console.log('共写入的 %d 字节数据', file2.bytesWritten);
});
});
// 使用 pipe方法 写入数据
// readStream.pipe(destination, [options])
var file1 = fs.createReadStream('./file1.txt');
var file2 = fs.createWriteStream('./file2.txt');
// options 中的 end 设置为 false 表示不会自动关闭文件
file1.pipe(file2, {end: false});
// 手动关闭
file1.on('end', function () {
// 这样可以继续写入数据再关闭
file2.end('我是被继续写入的数据');
});
// 取消写入
// readStream.unpipe([destination])
使用 path模块 对路径进行操作
// 将非标准路径转化为标准路径
var unStdPath = './..//testFile.txt';
var stdPath = path.normalize(unStdPath);
// 将多个字符串拼接
var newPath = path.join(__dirname, 'aaa', 'bbb', 'ccc');
// 解析出绝对路径
path.resolve(path1, [path2])
// 找出两个路径间的关系
path.relative(from, to)
// 获取某路径中的目录名
path.dirname(path1)
// 获取某路径中的文件名,去除 ext后缀
path.basename(path1, [ext])
// 获取某路径中的拓展名
path.extname(path1)
NODEJS-fs模块操作文件系统的更多相关文章
- NodeJs Fs模块
和前面的Http.Url模块一样,Fs模块也是node的核心模块之一,主要用于对系统文件及目录进行读写操作. 基本方法 fs.stat fs.stat可以用来判断是文件还是目录:stats.isFil ...
- nodejs - fs模块 - 文件操作
1, fs.stat 检测是文件还是目录 2, fs.mkdir 创建目录 var fs = require('fs') fs.mkdir('./dir',function(err){ if(err ...
- nodejs fs 模块
件系统操作相关的函数挺多的.首先可以分为两大类. 一类是异步+回调的. 一类是同步的. 在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可 1. 首先是一类最常规的读写函数,函数名称 ...
- nodejs fs 模块的用途
/*** New node filefs 操作*/var fs = require(“fs”); /*创建文件 var fileName = “anps_hsj”;fs.mkdir(fileName, ...
- nodejs -- fs模块 ---> readFile 函数 1) fs.readFile(filename, "binary", function(error, file) 2) response.write(file, "binary");
一:代码: 1.1 入口文件: index.js var server = require('./server'); var router = require("./router" ...
- nodejs零基础详细教程2:模块化、fs文件操作模块、http创建服务模块
第二章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
- nodejs模块fs——文件操作api
// fs模块常用api // 读取文件 .写入文件 .追加文件. 拷贝文件 .删除文件 // 读取文件 // fs.readFile(path[, options], callback) // fs ...
- 在nodeJS中操作文件系统(二)
在nodeJS中操作文件系统(二) 1. 移动文件或目录 在fs模块中,可以使用rename方法移动文件或目录,使用方法如下: fs.rename(oldPath,newPath,call ...
- Node.js 文件系统fs模块
Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...
随机推荐
- hdu 2027统计元音
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2027 思路:主要考察gets()函数用法,能够接受输入的空格,如果用%s或是cin>>st ...
- hud 1019最小公倍数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1019 思路:头两个数先求,再用所求的数与后面的一个数求,依次类推 #include<stdlib ...
- AngularJS XMLHttpRequest $http服务
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 读取JSON文件 以下是存储在web服务器上的 JSON 文件: http://www.runoob.com/try/ ...
- C#学习笔记---协变和逆变
http://www.cnblogs.com/alphafly/p/4048608.html 协变是指方法能从委托的返回类型派生的一个类型. 逆变之方法获取的参数可以是委托参数类型的基类.
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- 【JAVA正则表达式】
一.String类. java.lang.Object |--java.lang.String 常用方法: String replaceAll(String regex, String replac ...
- 情定XMLA,割舍不下的XAML
俗话说,不玩Silverlight的APP Developer,在DBA圈里就不是好的数据分析师.嗯,你没看错,题目里,一样东西是XMLA,一样东西是XAML.前者是用来玩SSAS的 ,一样是用来玩S ...
- phpcms-v9系统搭建wap网站及单页面
如需要绑定域名为wap.domain.com,作下如操作: 一.把wap.domain.com域名绑定到你的这个网站主机上. 二.在网站后台——模块——手机门户域名里面填写“http://wap.do ...
- list[C++]
//双向链表 #include <iostream> using namespace std; #include <list> int main(int argc, const ...
- NuGet学习笔记(1) 初识NuGet及快速安装使用
关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package M ...