Node.js中常规的文件操作总结


Posted in Javascript onOctober 13, 2016

前言

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:

var fs = require("fs")

fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX文件系统操作。与其他模块不同的是,fs模块中所有的操作都提供了异步和同步的两个版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync()

一. 目录操作

1. 创建目录

创建目录的语法如下:

fs.mkdir(path[, mode], callback) // 异步方法
fs.mkdirSync(path[, mode]) // 同步方法

示例:

var fs = require("fs");

// 在该文件的同一目录下建立test目录
fs.mkdir('test',function(err){
 if (err) {
  return console.error(err);
 }
 console.log("目录创建成功。");
});

2. 读取目录

读取目录的语法如下:

fs.readdir(path, callback)
fs.readdirSync(path)

     1、path: 文件路径;

     2、callback: 回调函数,回调函数带有两个参数err, files。err为错误信息,files为目录下的文件数组列表。

示例:

var fs = require("fs");

fs.readdir("test/",function(err, files){
 if (err) {
  return console.log(err);
 }
 files.forEach( function (file){
  console.log( file );
 });
});

3. 删除目录

删除目录的语法如下:

fs.rmdir(path, callback)
fs.rmdirSync(path)

示例:

var fs = require("fs");

fs.rmdir("test/ewe",function(err){
 if (err) {
  return console.log(err);
 }

 fs.readdir("/test/",function(err, files){
  if (err) {
   return console.error(err);
  }
  files.forEach( function (file){
   console.log( file );
  });
 });
});

二. 文件操作

1. 打开文件

打开文件的语法如下:

fs.open(path, flags, [mode], [callback(err, fd)])

其中,path为文件的路径,flags指文件的读取方式,mode参数用于创建文件时给文件指定权限,默认是0666.回掉函数将会传递一个文件描述符fd。

flags的常用参数值如下:

Node.js中常规的文件操作总结

mode参数表示的文件权限是POSIX操作系统中对文件读取和访问权限的规范,通常用一个八进制数来表示。例如0754表示文件所有者的权限是7(读、写、执行),同组的用户权限是5(读、执行),其他用户的权限是4(读)。

示例:

var fs = require('fs');

fs.open("test.txt","w",0644,function(e,fd){
 try{
  fs.write(fd,"first fs!",0,'utf8',function(e){
   fs.closeSync(fd);
  })
 } catch(E) {
  throw e;
 }

});

2. 写入文件

写入文件的语法如下:

fs.writeFile(file, data[, options], callback)
fs.writeFileSync(file, data[, options])

示例:

var fs = require("fs");

fs.writeFile('test.txt', 'hello world!', function(err) {
 if (err) {
  return console.log(err);
 }

 fs.readFile('test.txt', function (err, data) {
  if (err) {
   return console.log(err);
  }
  console.log("异步读取文件数据: " + data.toString());
 });
});

3. 读取文件

读取文件的语法如下:

fs.read(fd, buffer, offset, length, position, callback)
fs.readSync(fd, buffer, offset, length, position)

fs.readFile(file[, options], callback)
fs.readFileSync(file[, options])

其中,fs.read()fs.readSync()的参数如下:

     fd ? 通过 fs.open() 方法返回的文件描述符;

     buffer ? 数据写入的缓冲区;

     offset ? 缓冲区写入的写入偏移量;

     length ? 要从文件中读取的字节数;

     position ? 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取;

     callback ? 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象;

fs.read()的示例如下:

var fs = require('fs'); 
fs.open('test.txt', 'r', function(err, fd) { 
if (err) { 
console.error(err); 
return; 
} 
var buf = new Buffer(8); 
fs.read(fd, buf, 0, 8, null, function(err, bytesRead, buffer) { 
if (err) { 
console.error(err); 
return; 
} 
console.log('bytesRead: ' + bytesRead); 
console.log(buffer); 
}) 
});

fs.readFile()的示例如下:

var fs = require('fs'); 
fs.readFile('test.txt', function(err, data) { 
 if (err) { 
  console.log(err); 
 } else { 
  console.log(data.toString()); 
 } 
});

4. 关闭文件

关闭文件的语法如下:

fs.close(fd, callback)
fs.closeSync(fd)

5. 删除文件

删除文件的语法如下:

fs.unlink(path, callback)
fs.unlinkSync(path)

示例:

var fs = require("fs");

fs.unlink('test.txt', function(err) {
 if (err) {
  return console.log(err);
 }
 console.log("文件删除成功!");
});

6. 确定文件是否存在

确定文件是否存在的语法如下:

fs.exists(path, callback)
fs.existsSync(path)

示例:

var fs = require('fs');

fs.exists('test.txt', function (exists) {
 if(exists) {
  console.log("文件存在!");
 }else {
  console.log("文件不存在!");
 }
});

7. 追加内容至文件

fs.appendFile(file, data[, options], callback)
fs.appendFileSync(file, data[, options])

示例:

var fs = require('fs');

fs.appendFile("test.txt", "append content", function (err) {
 if (err) {
  console.log(err);
 }else {
  fs.readFile('test.txt', function(err, data) { 
   if (err) { 
    console.log(err); 
   } else { 
    console.log(data.toString()); 
   } 
  }); 
 }
});

总结

更多的文件系统操作可查看Node.js的fs模块的官方API文档,以上就是关于Node.js中文件常规操作的全部内容,希望这篇文章对大家学习或者使用Node.js能有所帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
JQuery给元素绑定click事件多次执行的解决方法
May 29 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
javaScript中"=="和"==="的区别详解
Mar 16 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 Javascript
VUE 实现element upload上传图片到阿里云
Aug 12 Javascript
JavaScript实现网页下拉菜单效果
Nov 20 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 #Javascript
js图片切换具体实现代码
Oct 13 #Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 #Javascript
jquery实现图片切换代码
Oct 13 #Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 #Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 #Javascript
Javascript中this绑定的3种方法与比较
Oct 13 #Javascript
You might like
基于laravel制作APP接口(API)
2016/03/15 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
Redis构建分布式锁
2017/03/28 PHP
php时间戳转换代码详解
2019/08/04 PHP
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
总结python爬虫抓站的实用技巧
2016/08/09 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
基于python历史天气采集的分析
2019/02/14 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python os.rename实例用法详解
2020/12/06 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
python re模块和正则表达式
2021/03/24 Python
应届生英语教师求职信
2013/11/05 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
放牛班的春天观后感
2015/06/01 职场文书
单身证明范本
2015/06/15 职场文书
花田少年史观后感
2015/06/16 职场文书
初三英语教学反思
2016/02/15 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书