文件I/O fs模块的基本用法

node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装。

1.writeFile函数的基本用法

文件I/O,写入是必修课之一。fs模块提供writeFile函数,可以异步的将数据写入一个文件, 如果文件已经存在则会被替换。用法如下:

例:fs.writeFile(filename, data, callback)

  1. var fs= require("fs");
  2. fs.writeFile('test.txt', 'Hello Node', function (err) {
  3. if (err) throw err;
  4. console.log('Saved successfully'); //文件被保存
  5. });

数据参数可以是string或者是Buffer,编码格式参数可选,默认为"utf8",回调函数只有一个参数err。

2.appendFile函数的基本用法

writeFile函数虽然可以写入文件,但是如果文件已经存在,我们只是想添加一部分内容,它就不能满足我们的需求了,很幸运,fs模块中还有appendFile函数,它可以将新的内容追加到已有的文件中,如果文件不存在,则会创建一个新的文件。使用方法如下:

例:fs.appendFile(文件名,数据,编码,回调函数(err));

  1. var fs= require("fs");
  2. fs.appendFile('test.txt', 'data to append', function (err) {
  3. if (err) throw err;
  4. //数据被添加到文件的尾部
  5. console.log('The "data to append" was appended to file!');
  6. });

编码格式默认为"utf8"

3.exists函数的基本用法

如何检查一个文件是否存在呢?我想exists函数可以帮助你,用法如下:

例:fs.exists(文件,回调函数(exists));

exists的回调函数只有一个参数,类型为布尔型,通过它来表示文件是否存在。

  1. var fs= require("fs");
  2. fs.exists('/etc/passwd', function (exists) {
  3. console.log(exists ? "存在" : "不存在!");
  4. });

4.rename函数的基本用法

修改文件名称是我们经常会遇见的事情,rename函数提供修改名称服务:

  1. var fs= require("fs");
  2. fs.rename(旧文件,新文件,回调函数(err){
  3. if (err) throw err;
  4. console.log('Successful modification,');
  5. });

5.rename函数的基本用法

移动文件也是我们经常会遇见的,可是fs没有专门移动文件的函数,但是我们可以通过rename函数来达到移动文件的目的,示例如下。

  1. var fs = require('fs');
  2. fs.rename(oldPath,newPath,function (err) {
  3. if (err) throw err;
  4. console.log('renamed complete');
  5. });

6.readFile函数的基本用法

读取文件是最常用到的功能之一,使用fs模块读取文件语法如下:

例:fs.readFile(文件,编码,回调函数);

  1. var fs = require('fs');
  2. fs.readFile(文件名, function (err, data) {
  3. if (err) throw err;
  4. console.log(data);
  5. });

回调函数里面的data,就是读取的文件内容。

7.unlink函数的基本用法

面对一堆垃圾的文件总是有想删除的冲动,我有强迫症?你才有呢。

好在有unlink函数,终于得救了,示例如下:

例:fs.unlink(文件,回调函数(err));

  1. var fs = require('fs');
  2. fs.unlink(文件, function(err) {
  3. if (err) throw err;
  4. console.log('successfully deleted');
  5. });

8.mkdir函数的基本用法

除了针对文件的操作,目录的创建、删除也经常遇到的,下面我们来看看node.js中如何创建目录:

  1. fs.mkdir(路径,权限,回调函数(err));

参数

  1. 路径:新创建的目录。
  2. 权限:可选参数,只在linux下有效,表示目录的权限,默认为0777,表示文件所有者、文件所有者所在的组的用户、所有用户,都有权限进行读、写、执行的操作。
  3. 回调函数:当发生错误时,错误信息会传递给回调函数的err参数。

9.rmdir函数的基本用法

删除目录也是必不可少的功能,rmdir函数可以删除指定的目录:

例:fs.rmdir(路径,回调函数(err));

  1. var fs = require('fs');
  2. fs.rmdir(path, function(err) {
  3. if (err) throw err;
  4. console.log('ok');
  5. });

10.readdir函数的基本用法

如果要读取目录下所有的文件应该怎么办呢?readdir函数可以读取到指定目录下所有的文件,示例如下:

  1. var fs = require('fs');
  2. fs.readdir(目录,回调函数(err,files));

回调函数 (callback) 接受两个参数 (err, files) 其中 files 是一个存储目录中所包含的文件名称的数组,数组中不包括 '.' 和 '..'。

fs模块不但提供异步的文件操作,还提供相应的同步操作方法,需要指出的是,nodejs采用异步I/O正是为了避免I/O时的等待时间,提高CPU的利用率,所以在选择使用异步或同步方法的时候需要权衡取舍。

nide.js(二)文件I/O的更多相关文章

  1. asp.net和js读取文件的MD5值的方法

    前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...

  2. php中关于js保存文件至本地的问题

    最近在搞一个livezilla的在线客服聊天的东东,客户界面要求添加一个下载聊天记录的功能.于是我就是翻看了下网上的各种关于”js保存文件至本地“的资料,发现只能在IE下通过execCommand实现 ...

  3. 简单又炫酷的two.js 二维动画教程

      前  言 S     N 今天呢给大家介绍一个小js框架,Two.JS.其实在自己学习的过程中并没有找到合适的教程,所以我这种学习延迟的同学是有一定难度的,然后准备给大家整理一份,简单易懂的小教程 ...

  4. 学习rollup.js模块文件打包

    学习rollup.js模块文件打包 一:rollup 是什么?Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码. webpack 和 Rollup 对比不同点 ...

  5. jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件

    jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...

  6. 10.用js下载文件(需要后端链接)

          用js下载文件 PS:本文说的,并非如何用js创建流.创建文件.实现下载功能. 而是说的:你已知一个下载文件的后端接口,前端如何请求该接口,实现点击按钮.下载文件到本地.(可以是zip啦. ...

  7. 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存

    js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法   一.CSS和 ...

  8. 去掉Myeclipse对JS等文件的验证

    在用Myeclipse导入新工程或在写代码时,最郁闷的就是它对js,jsp,html的验证太严格了,有时会呈现一个红叉或者一个黄色的感慨号,一运行就报Cannot return from outsid ...

  9. Nuxt.js(二、解决首屏速度与SEO)

    Nuxt.js(二.解决首屏速度与SEO) 1.普通的Vue SPA初始化加载速度很慢 在传统的web应用中,当用户请求一个页面时,服务器直接返回一个html文件,浏览器直接渲染出来.但是,在vue应 ...

随机推荐

  1. poj 3253 Fence Repair(模拟huffman树 + 优先队列)

    题意:如果要切断一个长度为a的木条需要花费代价a, 问要切出要求的n个木条所需的最小代价. 思路:模拟huffman树,每次选取最小的两个数加入结果,再将这两个数的和加入队列. 注意priority_ ...

  2. C# - DES加密+解密

    #region ===========================DES算法=================================== private static string ke ...

  3. 告示:CSDN博客通道支持Windows Live Writer写blog离线好友

    尊敬的各位CSDN用户: 您好! 为了更好的服务客户.CSDN已经支持Windows Live Writer离线写博客啦.Windows Live Writer于2014年5月29日正式上线啦!欢迎大 ...

  4. 自己动手写处理器之第四阶段(1)——第一条指令ori的实现

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第11篇,我尽量每周四篇 第4章 第一条指令ori的实现 前面几章介绍了非常多预备知识,也描绘了即将要实现的OpenMIPS处 ...

  5. ios消息的交互方式

    注意这些都是界面回传(即从第二个界面传到第一个界面,从第一个界面传到第二个界面的时候用第二个界面的属性即可)   iOS消息的交互方式有4种,分别为:通知,代理,block,kvo 现在我们对这个4中 ...

  6. tnsping慢的问题解决

    1.检查网络ping主机或IP是否正常,DNS是否设置正确 2. 检查防火墙设置 3.检查listener.log日志,查看是否有大量连接连入. 4.检查listener.log日志文件是否过大,如果 ...

  7. C++中数字与字符串之间的转换,别人的,

    C++中数字与字符串之间的转换   1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = st ...

  8. Git教程--Git安装和版本库的创建

    Git的诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世界热 ...

  9. Qt使用快捷键

    在说快捷键之前先来说一个QtCreator调试的过程中经常发生的一个问题. 问题描述: 用QtCreator建立了一个纯C++的项目,但是在F5调试时,竟然提示ptrace不允许的操作,修改工程配置为 ...

  10. jquery读取本地文件

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...