我们通过fs这个模块来对文件系统进行操作,对于文件系统操作一般都有同步、异步方法,两者区别,同步等有返回结果时候,在继续执行后面的代码,异步是不等返回结果,直接执行后面的代码,待有返回结果时候,通过回调函数来做出处理。一般同步方法函数名在异步方法名字后面加Sync,如异步读取文件readFile,同步读取文件为readFileSync,大多数情况用异步方法、但是读取配置文件要用同步方法。

readFileSync(path,[options])

创aaa.js文件

  1. readFile(path,[options],function(err,data){});
  2. var fs= require("fs");
  3. fs.readFile('./aa.txt',function(err,data){
  4. if(err){
  5. console.log("bad")
  6. }else{
  7. console.log("ok");
  8. console.log(data);
  9. console.log(data.toString());
  10. }
  11. })

创建aa.txt文件

写入你好

若我们异步读取两个文件,那么这两个文件的结果谁先返回,我们是不知道的,这得看文件大小,所以我们要想有先后顺序的读取,那么得在回调函数中写读取第二个文件

  1. var fs= require("fs");
  2. fs.readFile('../file.txt',function(err,data){
  3. if(err){
  4. console.log("bad")
  5. }else{
  6. console.log("读取第一个文件成功");
  7. console.log(data.toString());
  8. fs.readFile('../file2.txt','utf-8',function(err,data){
  9. if(err){
  10. console.log("读取第二个文件失败");
  11. }
  12. if(data){
  13. console.log("读取第2个文件成功");
  14. console.log(data);
  15. }
  16. })
  17. }
  18. })

  

options

flag:文件的操作情况,r表示这个文件只读,w表示写入文件,a追加文件(常用的三个)

encoding:读取文件用的编码,utf-8,base64,ascii我们不指定编码,那么返回的data为一个buffer

  1. var fs= require("fs");
  2. fs.readFile('../file.txt',{flag:'r+',encoding:'utf-8'},function(err,data){
  3. if(err){
  4. console.log("bad")
  5. }else{
  6. console.log("读取第一个文件成功");
  7. console.log(data);
  8. fs.readFile('../file2.txt','utf-8',function(err,data){
  9. if(err){
  10. console.log("读取第二个文件失败");
  11. }
  12. if(data){
  13. console.log("读取第2个文件成功");
  14. console.log(data);
  15. }
  16. })
  17. }
  18. })

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

wrtieFileSync(filename,data,[options])

filename:要写入的文件

data:写入文件的数据可以是字符串,可以是buffer

options:flag:对写入文件的操作默认为w,encoding:编码,mode:权限

callback:回调函数

  1. var fs = require("fs");
  2. var data="aa";
  3. fs.writeFile('./aa.txt',data,{flag:'w',encoding:'utf-8',mode:''},function(err){
  4. if(err){
  5. console.log("文件写入失败")
  6. }else{
  7. console.log("文件写入成功");
  8. console.log(data)
  9.  
  10. }
  11.  
  12. })

  1. var fs = require("fs");
  2. var data="天下太平-追加";
  3. fs.writeFile('./aa.txt',data,{flag:'a',encoding:'utf-8',mode:''},function(err){
  4. if(err){
  5. console.log("文件写入失败")
  6. }else{
  7. console.log("文件追加成功");
  8. console.log(data)
  9.  
  10. }
  11.  
  12. })

readFile 、writeFile 同时使用

读取一张图片,之后写入到另一张图片

  1. var fs =require("fs");
  2. fs.readFile('./1.png','base64',function(err,data){
  3. if(err){
  4. console.log("取图片1失败");
  5. }else{
  6. fs.writeFile('./2.png',data,'base64',function(err){
  7. console.log("图片2写入成功");
  8. })
  9. }
  10. })

writeFile(filename,data,{flag:'a'},callback)与appendFile一致

  1. var fs = require("fs");
  2. var data="你好-追加appendFile";
  3. fs.appendFile('./aa.txt',data,function(err){
  4. if(err){
  5. console.log("文件写入失败")
  6. }else{
  7. console.log("文件追加成功");
  8.  
  9. }
  10.  
  11. })

从指定位置开始读取文件

fs.open fs.read结合实现从指定位置读取文件

fs.open(filename,options,[mode],callback)

callback(err,fd)

  1. var fs =require("fs");
  2. fs.open('./aa.txt','r','',function(err,fd){
  3. if(err){
  4. console.log("打开失败");
  5. }else{
  6. console.log(fd);
  7. }
  8. })

fs.read(fd,buffer,offset,length,pasition,callback)

fd:ope方发返回的文件描述符号

buffer:读取的文件写到那个缓存区中

offset:从缓存区中那个字节开始写入

length:写入多长的字节,

pasitong:文件指定位置处开始写入缓存区

  1. var fs =require("fs");
  2. fs.open('./wfile.txt','r','',function(err,fd){
  3. if(err){
  4. console.log("打开失败");
  5. }else{
  6. var buf=new Buffer();
  7. console.log(buf)
  8. fs.read(fd,buf,,,,function(err,bytesRead,buf){
  9. if(err){
  10. console.log("指定位置读取文件失败");
  11. }else{
  12. console.log(bytesRead);
  13. console.log(buf);
  14. }
  15. })
  16. }
  17. })

var bytesRead=readSync(fd,buffer,offset,length,position)

指定位置写数据

fs.open()yu sf.write(fd,buffer,offset,length,position, callback)

var fs=require("fs");

//这是追加   ‘w’ 是替换原来的文件内容

  1. fs.open('./wfile.txt','a','',function(err,fd){
  2. if(err){
  3. console.log("打开文件失败");
  4. }else{
  5. var buffer=new Buffer("小鸟");
  6. console.log(buffer.length);
  7. fs.write(fd,buffer,,buffer.length,,function(err,written,buffer){
  8. if(err){
  9. console.log("指定位置写入文件失败");
  10. }else{
  11. console.log(written);
  12. console.log(buffer.toString());
  13. }
  14.  
  15. })
  16. fs.fsync(fd);
  17. fs.close(fd);
  18. }
  19. })

fs.fsync(fd)该方法吧缓存区的数据同步到文件中

fs.close(fd)关闭文件

nodejs 操作文件系统读取写入文件的更多相关文章

  1. 关于Python中读取写入文件并进行文件与用户交互的操作

    一.提前知识点 在python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...

  2. pandas-19 DataFrame读取写入文件的方法

    pandas-19 DataFrame读取写入文件的方法 DataFrame有非常丰富的IO方法,比如DataFrame读写csv文件excel文件等等,操作很简单.下面在代码中标记出来一些常用的读写 ...

  3. c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变

    c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...

  4. [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

  5. Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流

    /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...

  6. php操作文件(读取写入文件)

    一,PHP如何读取文件 PHP读取文件可以读取当前服务器或远程服务器中的文件.其步骤是:打开文件.读文件和关闭文件. 1,PHP如何打开文件 使用PHP函数fopen()打开一个文件,fopen()一 ...

  7. PHP文件操作 之读取一个文件(以二进制只读的方式打开)

    最近应用了文件的读取,顺便复习一下! //读取一个文件 $f = fopen($filename,'rb'); $f: 表示返回的一个资源句柄 $filename:要打开的文件路径 rb:参数,表示只 ...

  8. java读取写入文件

    先来看一下java写入文件 public static void readTxt(String value) throws IOException { FileWriter fw = null; tr ...

  9. matlab操作之--读取指定文件夹下的“指定格式”文件

    %% 正负样本所在folder fext='*.png';%要读取的文件格式 positiveFolder='F:\课题\Crater detection\machingLearning\Positi ...

随机推荐

  1. iOS 基本数据类型 和 指针 特点

    基本数据类型 : 整型int, 字符型char , 浮点型 (float 和 double), 枚举型; -- 构造类型 : 数组类型, 结构体类型, 共用体类型; -- 指针类型 : 最终要的数据类 ...

  2. Linux mint

    最近一直在配置vim, 今天终于配的差不多了,拿出来晒晒,^_^ . 附上一段Linux Mint 的简介(来自Wiki). Linux Mint是一种基于Ubuntu开发出的Linux操作系统.由L ...

  3. ubuntu16.04 docker安装

    docker官网安装页面:https://docs.docker.com/engine/installation/linux/ubuntu/ 这个是ubuntu14.04 LTS需要的 $ sudo ...

  4. HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树

    http://acm.hdu.edu.cn/showproblem.php?pid=1800 字典树 #include<iostream> #include<string.h> ...

  5. Spring Cloud之服务治理(注册发现)

    服务治理SpringCloud Eureka 什么是服务治理 在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用.负载均衡.容 ...

  6. Spark- 流量日志分析

    日志生成 package zx.Utils import java.io.{File, FileWriter} import java.util.Calendar import org.apache. ...

  7. 转载 解决Android与服务器交互大容量数据问题

    对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...

  8. bzoj 4540: [Hnoi2016]序列 莫队

    题目: 给定长度为n的序列:a1,a2,-,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,-,ar- 1,ar.若1≤l≤s≤t≤r≤n,则称a[s:t]是a ...

  9. Linux编程之错误代码

    头文件/usr/include/asm-generic/errno-base.h定义错误码: #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERI ...

  10. 标准模板库(STL)学习指南之map映射

    转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...