文件操作频率最高的就是读跟写。nodejs的文件的读取API在《node基础-文件系统-读取文件》里已经简单介绍过,本文就简单介绍下nodejs的文件写API。

nodejs的文件操作均提供了同步、异步两种方式,写操作也是同样的,常用的两个接口为fs.writeFile(异步)、fs.writeFileSync(同步),下面就来看看他们的使用以及区别。

fs.writeFile(filename, data, [options], callback)

先来看下API说明

/**
* 往文件里异步写数据,写入的内容可以是字符串,也可以是二进制数据。
* 如果文件不存在,则创建;如果文件已存在,那么内容会被覆盖
* @param {String} filename 文件名
* @param {String|Buffer} data 要往文件里写的内容,可以是字符串,也可以是二进制数据。当为二进制数据时候,options.encoding 会被忽略
* @param {Object} [options]
* @param {String} options.encoding 编码,默认是utf8
* @param {Number} options.mode=438 模式
* @param {String} options.flag=w 写文件的模式
* @param {Function} callback 回调方法
*/
fs.writeFile(filename, data, [options], callback)

接下来我们来看看实际例子,首先,需要引入fs,下面为节省篇幅就不再贴这行代码了

var fs = require('fs');

例子一:往不存在的文件里写内容

往一个不存在的文件里写内容,则会先创建该文件,再往里面写内容

var noneExistFileName = ['async_create.', new Date()-0, '.txt'].join('');
fs.writeFile(noneExistFileName, '文件不存在,则创建', function(err){
if(err) throw err;
console.log(noneExistFileName+'不存在,被创建了!');
});

例子二:往存在的文件里写内容

如果该文件已存在,则原有文件内容会北覆盖

fs.writeFile('async_exists.txt', '文件已存在,则覆盖内容 -- '+(new Date()-0), function(err){
if(err) throw err;
console.log('exists.txt已存在,内容被覆盖!');
});

例子三:往已经存在的文件里追加内容

options.flag 设置为 'a' 时,则会将写模式变为追加内容

fs.writeFile('async_add.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
flag: 'a'
}, function(err){
if(err) throw err;
console.log('exists.txt已存在,内容被覆盖!');
});

fs.writeFileSync(filename, data, [options])

写文件的同步版本,同样先来看下API说明,你会发现跟fs.writeFile 没啥区别,就是少了个回调

/**
* 文件同步写接口,是fs.writeFile的同步版本,参数也差不多
* @param {String} filename 文件名
* @param {String|Buffer} data 要往文件里写的内容,可以是字符串,也可以是二进制数据。当为二进制数据时候,options.encoding 会被忽略
* @param {Object} [options]
* @param {String} options.encoding 编码,默认是utf8
* @param {Number} options.mode=438 模式
* @param {String} options.flag=w 写文件的模式
*/
fs.writeFileSync(filename, data, [options])

下面我们看下具体例子

例子一:往不存在的文件里写内容,则创建该文件

// case 1:往不存在的文件里写内容,则创建该文件
var noneExistFileName = ['sync_create.', new Date()-0, '.txt'].join('');
fs.writeFile(noneExistFileName, '文件不存在,则创建');

例子二:往存在的文件里写内容,原有内容被覆盖

fs.writeFile('sync_exists.txt', '文件已存在,则覆盖内容 -- '+(new Date()-0));

例子三:往已经存在的文件里追加内容

fs.writeFile('sync_add.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
flag: 'a'
});

完整示例

demo下载请点击,将代码随便解压缩到任意目录下,然后在该目录下运行命令 node writefile.js 即可

/**
* 文件写入demo,by 程序猿小卡
*/
var fs = require('fs'); /**
* 往文件里异步写数据,写入的内容可以是字符串,也可以是二进制数据。
* 如果文件不存在,则创建;如果文件已存在,那么内容会被覆盖
* @param {String} filename 文件名
* @param {String|Buffer} data 要往文件里写的内容,可以是字符串,也可以是二进制数据。当为二进制数据时候,options.encoding 会被忽略
* @param {Object} [options]
* @param {String} options.encoding 编码,默认是utf8
* @param {Number} options.mode=438 模式
* @param {String} options.flag=w 写文件的模式
* @param {Function} callback 回调方法
*/
// fs.writeFile(filename, data, [options], callback) // case 1:往不存在的文件里写内容,则创建该文件
var noneExistFileName = ['async_create.', new Date()-0, '.txt'].join('');
fs.writeFile(noneExistFileName, '文件不存在,则创建', function(err){
if(err) throw err;
console.log(noneExistFileName+'不存在,被创建了!');
}); // case 2:往存在的文件里写内容,原有内容被覆盖
fs.writeFile('async_exists.txt', '文件已存在,则覆盖内容 -- '+(new Date()-0), function(err){
if(err) throw err;
console.log('exists.txt已存在,内容被覆盖!');
}); // case 3:往已经存在的文件里追加内容
fs.writeFile('async_add.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
flag: 'a'
}, function(err){
if(err) throw err;
console.log('exists.txt已存在,内容被覆盖!');
}); /**
* 文件同步写接口,是fs.writeFile的同步版本,参数也差不多
* @param {String} filename 文件名
* @param {String|Buffer} data 要往文件里写的内容,可以是字符串,也可以是二进制数据。当为二进制数据时候,options.encoding 会被忽略
* @param {Object} [options]
* @param {String} options.encoding 编码,默认是utf8
* @param {Number} options.mode=438 模式
* @param {String} options.flag=w 写文件的模式
*/
// fs.writeFileSync(filename, data, [options]) // case 1:往不存在的文件里写内容,则创建该文件
var noneExistFileName = ['sync_create.', new Date()-0, '.txt'].join('');
fs.writeFile(noneExistFileName, '文件不存在,则创建'); // case 2:往存在的文件里写内容,原有内容被覆盖
fs.writeFile('sync_exists.txt', '文件已存在,则覆盖内容 -- '+(new Date()-0)); // case 3:往已经存在的文件里追加内容
fs.writeFile('sync_add.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
flag: 'a'
});

写在后面

官方文档请点击

本文如有错漏,请指出 :)

node基础-文件系统-文件写操作的更多相关文章

  1. python 基础之文件读操作

    创建一个名为‘尘曦’的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...

  2. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  3. c#创建文件( File.Create() )后对文件写操作出错的分析

    在C#中,使用system.IO.File.Create()创建完一个文件之后,如果需要对这个文件进行写操作,会出现错误,提示你“这个文件正在被使用”. 原因是System.IO.File.Creat ...

  4. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  5. C语言基础 (12) 文件的操作 FILE

    课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...

  6. node基础07:写文件

    1.writeFile //server.js var http = require("http"); var writefile = require("./writef ...

  7. python3基础之文件对象操作

    1.向文本文件中写入内容 s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n' # 需要写入文件的字符串 print('显示需要写入的内容:\n{0:s}'.format ...

  8. python对文件写操作报错UnicodeEncodeError

    2017-04-25 python连mongodb数据库并将提取部分数据写入本地文件时,出现UnicodeEncodeError. 解决方法:指定文件字符集为utf-8,在文件头部加入以下代码 imp ...

  9. 文件写操作--WriteLog

    private static void Write(string sMsg, string fileName) { if (sMsg != "") { try { var dir ...

随机推荐

  1. Oracle EBS AP取消核销

    --取消核销 created by jenrry 20170425 DECLARE l_result BOOLEAN; l_msg_count NUMBER; l_result_n varchar2( ...

  2. Oracle EBS AR 冲销收款

    DECLARE L_CR_ID NUMBER; L_ATTRIBUTE_REC AR_RECEIPT_API_PUB.ATTRIBUTE_REC_TYPE; L_GLOBAL_ATT_REC AR_R ...

  3. python执行sql语句

    dbname = 'db.sqlite3' dbpath = 'D:\\pyweb\\sf\\db.sqlite3' csvpath = pspath #custom thread number tn ...

  4. python基础学习15----异常处理

    异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件). 1.异常的类型 异常的类型多种多样,常见的异常有: AttributeE ...

  5. kettle数据同步

    通过kettle实现两张表的数据同步,具体设计如下:

  6. [Python_5] Python 线程

    0. 说明 Python 线程笔记 1. 低级 API # -*-coding:utf-8-*- """ 线程 """ "&quo ...

  7. CentOS7 安装 JDK

    安装步骤 1. 将 jdk 安装包传到 用户 centos 的 home 目录 (/home/centos) 通过 Xftp 将安装包( jdk-8u161-linux-x64.tar.gz )传到用 ...

  8. extern “C”的作用详解

    extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码.加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C+ ...

  9. Windows API串口编程详解

    (一)Windows API串口通信编程概述 Windows环境下的串口编程与DOS环境下的串口编程有很大不同.Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Window ...

  10. XtraEditors四、TextEdit、ButtonEdit、PictureEdit、RadioGroup、PopupContainerEdit

    TextEdit控件 以文本框的形式绑定各种形式的选择框: 文本框设置 输入 密码 字符 时, 要有 * 号掩盖输入的字符, 代码如下: textEdit1.Properties.PasswordCh ...