[前端] nodejs 文件系统解析
来源:互联网 发布:农村淘宝经营模式 编辑:程序博客网 时间:2024/06/10 14:54
前提:需要nodejs环境
一、目录
1. readFileSync()
2. writeFileSync()
3. exists(path, callback)
4. mkdir(), writeFile(), readFile()
5. mkdirSync(), writeFileSync(), readFileSync()
6. readdir()
7. stat()
8. watchfile(), unwatchfile()
9. createReadStream()
10. createWriteStream()
二、具体章节( js脚本是写在test.js文件里的 1.txt是测试用的 )
1. readFileSync() 同步读取文件 (test.js 1.txt{changed 换行 hello world} )
var fs = require('fs'); // 引入文件系统模块var text = fs.readFileSync('1.txt', function() { text.slit(/\r?\n/).forEach(function(line) { console.log(line); // 输出:changed 换行 hello world });});
2. writeFileSync()同步写入文件( test.js 1.txt )
var fs = require('fs'); // 引入文件系统模块fs.writeFileSync('1.txt', 'hello world !', 'utf-8'); // 1.txt 文件内容已换成hello world
3. exists(path, callback) 判断路径是否存在
var fs = require('fs'); // 引入文件系统模块var util = require('util'); // 引入实用工具util模块fs.exists('/hello', function(exists) { util.debug(exists ? 'hello目录存在' : 'hello目录不存在')});
删除目录:
var fs = require('fs'); // 引入文件系统模块fs.exists('/hello', function(exists) { if(exists) { fs.rmdir('hello'); // 删除hello目录 } else { console.log('hello 目录不存在!'); }});
4. mkdir(), readFile()
生成目录:
var fs = require('fs'); // 引入文件系统模块fs.mkdir('hello', 0777, function(err) { if(err) throw err;});
读取文件:
var fs = require('fs'); // 引入文件系统模块fs.readFile('1.txt', 'utf-8', function(err, data) { if(err) throw err; console.log(data); // 读取1.txt内容});
5. mkdirSync(), writeFileSync(), readFileSync() 建立目录,写入文件,读取内容同步
var fs = require('fs'); // 引入文件系统模块fs.mkdirSync('hello', 0777); // 创建目录fs.writeFileSync('hello/2.txt', 'hello node !'); // 在目录内容创建2.txt 并写内容var content = fs.readFileSync('hello/2.txt', 'utf-8'); // 读取目录内2.txt的内容console.log('目录已经创建:');console.log('2.txt的内容:' + data);
6. readdir() 读取目录
var fs = require('fs'); // 引入文件系统模块// process.cwd() 运行node的工作目录,可以使用 cd /d 修改工作目录 cwd: change work directoryfs.readdir(process.cwd(), function (err, files) { if (err) { console.log(err); return; } var count = files.length; // 返回 文件+目录的数量 var results = {}; files.forEach(function (filename) { fs.readFile(filename, function (data) { results[filename] = data; console.log(results); // 打印:文件名和目录名 count--; if (count <= 0) { // 数量小于等于0时的处理 } }); });});
7. stat() 判断参数是一个文件还是目录
var fs = require('fs'); // 引入文件系统模块/* 预定义hello目录 ( hello/sub hello/2.txt ) */fs.readdir('./hello', function(err, files) { if(err) throw err; console.log(files); // 输出:hello 目录下的文件或目录 files.forEach(function(file) { fs.stat('./hello/' + file, function(err, stats) { if(stats.isFile()) { console.log('%s is file ', file); } else if(stats.isDirectory()) { console.log('%s is a directory ', file); } else { console.log('stats: %s', JSON.stringify(stats)); } }); });});
8. watchfile(), unwatchfile() 监听一个文件,如果该文件发生变化,就会自动触发回调函数
var fs = require('fs'); // 引入文件系统模块fs.watchFile('1.txt', function(curr, prev) { console.log(curr.mtime); console.log(prev.mtime);});fs.writeFile('1.txt', 'changed', function(err) { if(err) throw err; console.log('file write complete !');});
9. createReadStream() 创建读取操作的数据流(往往用于大型文件)
var fs = require('fs'); // 引入文件系统模块/* 假如1.txt内容是hello world ! */function readLines(input, func) { var remaining = ''; input.on('data', function(data) { remaining += data; var index = remaining.indexOf('\n'); var last = 0; while(index > -1) { var line = remaining.substring(last, index); // substring(start, stop) 参数:开始下标,结束下标 last = index + 1; func(line); index = remaining.indexOf('\n', last); // indexOf(searchvalue, fromindex) 参数:搜索值,从哪个下标开始搜索 } remaining = remaining.substring(last); }); input.on('end', function() { if(remaining.length > 0) { func(remaining); } });}function func(data) { console.log('Line: ' + data); // 输出:hello world !}var input = fs.createReadStream('1.txt');readLines(input, func);
10. createWriteStream() 创建一个写入数据流对象。end()结束写入操作
var fs = require('fs'); // 引入文件系统模块var out = fs.createWriteStream('1.txt', {encoding: 'utf-8'});out.write('hello node !'); // 1.txt内容已改成 hello node !out.end();
三、总结
此内容是参照 http://javascript.ruanyifeng.com/nodejs/fs.html (一个牛B的前端文章)加上自己的理解重新写了一下,希望对大家有所帮助。
谢谢关注!
- [前端] nodejs 文件系统解析
- nodejs 文件系统
- NodeJS 文件系统
- nodejs一文件系统
- nodeJS之fs文件系统
- Nodejs之文件系统
- [前端] nodejs入门[浅入深出]
- [前端] nodejs工作原理
- 前端之js-nodejs
- 前端之nodejs聊天室
- nodejs 之 file system 文件系统
- Nodejs之文件系统的使用
- Nodejs学习 4 -- 文件系统file
- [前端] nodejs之路由router
- [前端] nodejs之cookie入门
- [前端] centos下搭建nodejs
- nodejs ejs前端模板学习
- web前端入门(一)--NodeJs
- iOS 个人开发者账号申请注意点
- iPhone测试点
- 初学arcengine——ICommand 用法
- 优秀项目经理必备的8个要素
- IOS中的手势详解
- [前端] nodejs 文件系统解析
- Linux使用小技巧
- 怎样运行地理处理工具 Geoprocessing & Geoprocessor & IGPProcess
- RAND函数和SRAND函数
- iOS工程如何支持64-bit
- adb工具包的安装和使用方法
- 乘法口诀表
- __bridge,__bridge_transfer和__bridge_retained 关键字作用 (2013-08-16 14:18:44) 分类: iPhone开发
- 图片展示/分享型的网站如何提高图片的载入速度?