返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.js文件操作方法汇总
  • 131
分享到

Node.js文件操作方法汇总

操作方法文件Node 2022-06-04 17:06:17 131人浏览 独家记忆
摘要

node.js和其他语言一样,也有文件操作。先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开、关闭、读、写、文件信息、新建删除目录、删除文件、检测文件路径等。在node.js中也是一样,

node.js和其他语言一样,也有文件操作。先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开、关闭、读、写、文件信息、新建删除目录、删除文件、检测文件路径等。在node.js中也是一样,也都是这些功能,可能就是api与其他语言不太一样。

一、同步、异步打开关闭



var fs=require("fs");
//同步读 fs.openSync = function(path, flags, mode)
//模块fs.js文件中如上面定义的openSync 函数3个参数
//.1.path 文件路径
//2.flags 打开文件的模式
//3.model 设置文件访问模式
//fd文件描述
var fd=fs.openSync("data/openClose.txt",'w');
//fs.closeSync = function(fd)
fs.closeSync(fd);

//异步读写
//fs.open = function(path, flags, mode, callback_)
//fs.close = function(fd, callback)
fs.open("data/openColse1.txt",'w',function(err,fd) {
  if (!err)
  {
    fs.close(fd,function(){
      console.log("closed");
    });
  }
});

其中的flags其他语言也会有.其实主要分3部分 r、w、a.和C中的差不多。

1.r —— 以只读方式打开文件,数据流的初始位置在文件开始
2.r+ —— 以可读写方式打开文件,数据流的初始位置在文件开始
3.w ——如果文件存在,则将文件长度清0,即该文件内容会丢失。如果不存在,则尝试创建它。数据流的初始位置在文件开始
4.w+ —— 以可读写方式打开文件,如果文件不存在,则尝试创建它,如果文件存在,则将文件长度清0,即该文件内容会丢失。数据流的初始位置在文件开始
5.a —— 以只写方式打开文件,如果文件不存在,则尝试创建它,数据流的初始位置在文件末尾,随后的每次写操作都会将数据追加到文件后面。
6.a+ ——以可读写方式打开文件,如果文件不存在,则尝试创建它,数据流的初始位置在文件末尾,随后的每次写操作都会将数据追加到文件后面。

二、读写

1.简单文件读写



var fs = require('fs');
var config = {
  maxFiles: 20,
  maxConnections: 15,
  rootPath: "/WEBroot"
};
var configTxt = JSON.stringify(config);

var options = {encoding:'utf8', flag:'w'};
//options 定义字符串编码 打开文件使用的模式 标志的encoding、mode、flag属性 可选
//异步
//fs.writeFile = function(path, data, options, callback_)
//同步
//fs.writeFileSync = function(path, data, options)

fs.writeFile('data/config.txt', configTxt, options, function(err){
  if (err){
    console.log("Config Write Failed.");
  } else {
    console.log("Config Saved.");
    readFile();
  }
});
function readFile()
{
  var fs = require('fs');
  var options = {encoding:'utf8', flag:'r'};
  //异步
  //fs.readFile = function(path, options, callback_)
  //同步
  //fs.readFileSync = function(path, options)
  fs.readFile('data/config.txt', options, function(err, data){
    if (err){
      console.log("Failed to open Config File.");
    } else {
      console.log("Config Loaded.");
      var config = JSON.parse(data);
      console.log("Max Files: " + config.maxFiles);
      console.log("Max Connections: " + config.maxConnections);
      console.log("Root Path: " + config.rootPath);
    }
  });
}


"C:Program Files (x86)JetBrainsWebStORM 11.0.3binrunnerw.exe" F:nodejsnode.exe SimpleReadWrite.js
Config Saved.
Config Loaded.
Max Files: 20
Max Connections: 15
Root Path: /webroot

Process finished with exit code 0

2.同步读写



var fs = require('fs');
var veggieTray = ['carrots', 'celery', 'olives'];

fd = fs.openSync('data/veggie.txt', 'w');
while (veggieTray.length){
  veggie = veggieTray.pop() + " ";
  //系统api 
  //fd 文件描述 第二个参数是被写入的String或Buffer
  // offset是第二个参数开始读的索引 null是表示当前索引
  //length 写入的字节数 null一直写到数据缓冲区末尾
  //position 指定在文件中开始写入的位置 null 文件当前位置
  // fs.writeSync(fd, buffer, offset, length[, position]);
  // fs.writeSync(fd, string[, position[, encoding]]);
  //fs.writeSync = function(fd, buffer, offset, length, position)
  var bytes = fs.writeSync(fd, veggie, null, null);
  console.log("Wrote %s %dbytes", veggie, bytes);
}
fs.closeSync(fd);

var fs = require('fs');
fd = fs.openSync('data/veggie.txt', 'r');
var veggies = "";
do {
  var buf = new Buffer(5);
  buf.fill();
  //fs.readSync = function(fd, buffer, offset, length, position)
  var bytes = fs.readSync(fd, buf, null, 5);
  console.log("read %dbytes", bytes);
  veggies += buf.toString();
} while (bytes > 0);
fs.closeSync(fd);
console.log("Veggies: " + veggies);


"C:Program Files (x86)JetBrainsWebStorm 11.0.3binrunnerw.exe" F:nodejsnode.exe syncReadWrite.js
Wrote olives 7bytes
Wrote celery 7bytes
Wrote carrots 8bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 2bytes
read 0bytes
Veggies: olives celery carrots     

Process finished with exit code 0

3.异步读写 和同步读写的参数差不多就是多了callback



var fs = require('fs');
var fruitBowl = ['apple', 'orange', 'banana', 'grapes'];
function writeFruit(fd){
  if (fruitBowl.length){
    var fruit = fruitBowl.pop() + " ";
   // fs.write(fd, buffer, offset, length[, position], callback);
   // fs.write(fd, string[, position[, encoding]], callback);
   // fs.write = function(fd, buffer, offset, length, position, callback)
    fs.write(fd, fruit, null, null, function(err, bytes){
      if (err){
        console.log("File Write Failed.");
      } else {
        console.log("Wrote: %s %dbytes", fruit, bytes);
        writeFruit(fd);
      }
    });
  } else {
    fs.close(fd);
    ayncRead();
  }
}
fs.open('data/fruit.txt', 'w', function(err, fd){
  writeFruit(fd);
});

function ayncRead()
{
  var fs = require('fs');
  function readFruit(fd, fruits){
    var buf = new Buffer(5);
    buf.fill();
    //fs.read = function(fd, buffer, offset, length, position, callback)
    fs.read(fd, buf, 0, 5, null, function(err, bytes, data){
      if ( bytes > 0) {
        console.log("read %dbytes", bytes);
        fruits += data;
        readFruit(fd, fruits);
      } else {
        fs.close(fd);
        console.log ("Fruits: %s", fruits);
      }
    });
  }
  fs.open('data/fruit.txt', 'r', function(err, fd){
    readFruit(fd, "");
  });
}


"C:Program Files (x86)JetBrainsWebStorm 11.0.3binrunnerw.exe" F:nodejsnode.exe asyncReadWrite.js
Wrote: grapes 7bytes
Wrote: banana 7bytes
Wrote: orange 7bytes
Wrote: apple 6bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 2bytes
Fruits: grapes banana orange apple  

Process finished with exit code 0

4.流式读写



var fs = require('fs');
var grains = ['wheat', 'rice', 'oats'];
var options = { encoding: 'utf8', flag: 'w' };
//从下面的系统api可以看到 createWriteStream 就是创建了一个writable流
//fs.createWriteStream = function(path, options) {
//  return new WriteStream(path, options);
//};
//
//util.inherits(WriteStream, Writable);
//fs.WriteStream = WriteStream;
//function WriteStream(path, options)
var fileWriteStream = fs.createWriteStream("data/grains.txt", options);
fileWriteStream.on("close", function(){
  console.log("File Closed.");
  //流式读
  streamRead();
});
while (grains.length){
  var data = grains.pop() + " ";
  fileWriteStream.write(data);
  console.log("Wrote: %s", data);
}
fileWriteStream.end();

//流式读
function streamRead()
{
  var fs = require('fs');
  var options = { encoding: 'utf8', flag: 'r' };
  //fs.createReadStream = function(path, options) {
  //  return new ReadStream(path, options);
  //};
  //
  //util.inherits(ReadStream, Readable);
  //fs.ReadStream = ReadStream;
  //
  //function ReadStream(path, options)
  //createReadStream 就是创建了一个readable流
  var fileReadStream = fs.createReadStream("data/grains.txt", options);
  fileReadStream.on('data', function(chunk) {
    console.log('Grains: %s', chunk);
    console.log('Read %d bytes of data.', chunk.length);
  });
  fileReadStream.on("close", function(){
    console.log("File Closed.");
  });
}


"C:Program Files (x86)JetBrainsWebStorm 11.0.3binrunnerw.exe" F:nodejsnode.exe StreamReadWrite.js
Wrote: oats 
Wrote: rice 
Wrote: wheat 
File Closed.
Grains: oats rice wheat 
Read 16 bytes of data.
File Closed.

Process finished with exit code 0

个人觉得像这些api用一用感受一下就ok了,遇到了会用就行了。

--结束END--

本文标题: Node.js文件操作方法汇总

本文链接: https://lsjlt.com/news/13066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js文件操作方法汇总
    Node.js和其他语言一样,也有文件操作。先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开、关闭、读、写、文件信息、新建删除目录、删除文件、检测文件路径等。在node.js中也是一样,...
    99+
    2022-06-04
    操作方法 文件 Node
  • python的文件操作方法汇总
    文件的读操作 示例: print("->文件句柄的获取,读操作:") f = open('无题','r',encoding='utf8') d = f.read() f.close()...
    99+
    2022-06-04
    操作方法 文件 python
  • Python文件相关操作和方法汇总大全
    目录os.path文件文件读写文件删除文件复制移动目录创建目录删除目录复制目录枚举目录遍历(游走)目录文件名模式匹配fnmatchglob临时文件与目录前言:  Pytho...
    99+
    2024-04-02
  • Python对文件操作知识汇总
    打开文件 操作文件 1打开文件时,需要指定文件路径和打开方式 打开方式: r:只读 w:只写 a:追加 “+”表示可以同时读写某个文件 r+:读写 w+:写读 a+:同a U"表示在读取时,可以将 r n ...
    99+
    2022-06-04
    操作 文件 知识
  • Python 文件操作方法总结
    目录文件处理流程基本操作打开文件 读文件内容关闭文件写文件文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件  r模式...
    99+
    2024-04-02
  • Node文件操作汇总实例详解
    目录前言文件系统目录处理读写文件文件描述监控文件异步文件删除文件总结前言 前两天我们介绍了 Nodejs 中 I/O 的重要组成部分:Buffer对象 和 Stream流,今天我们介...
    99+
    2022-11-13
    Node文件操作汇总 Node 文件操作
  • java IO 文件操作方法总结
    java IO 文件操作方法总结对于输入输出的理解:    输入输出,以程序为参考点,外部数据进入程序,通过输入流完成。程序将数据给外部设备,通过输出流完成。文件Io的操作//获取文件File file=new...
    99+
    2023-05-31
    java io
  • Node.js中常规的文件操作总结
    前言 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") fs模块是文件操作的封...
    99+
    2022-06-04
    常规 操作 文件
  • Android 读写文件方法汇总
    一、 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写) 代码如下:String res = "";try{InputStream in = get...
    99+
    2022-06-06
    方法 方法汇总 Android
  • Android 文件读写操作方法总结
    Android 文件读写操作方法总结 在Android中的文件放在不同位置,它们的读取方式也有一些不同。 本文对android中对资源文件的读取、数据区文件的读取、SD卡文件...
    99+
    2022-06-06
    方法 Android
  • Python selenium文件上传方法汇总
    文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer。 首先,我们要区分出上传按钮的种类,大体上可以分...
    99+
    2022-06-04
    文件上传 方法 Python
  • python字符串操作的15种方法汇总
    目录前言1. 字符串定义2. 索引(即下标)3. 切片:顾头不顾尾(截取一部分字符串)4. 跳取 s[首:尾:步长]5. 字符串的操作6. 居中(用空白/其他字符填充)7. 每个用特...
    99+
    2024-04-02
  • Node.js进行文件操作的方法有哪些
    这篇文章主要介绍“Node.js进行文件操作的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js进行文件操作的方法有哪些”文章能帮助大家解决问题。Node.js是一个基于Chro...
    99+
    2023-07-05
  • 总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)
    目录一、前言二、fs.mkdir()创建文件夹2.1 最简单的案例2.2 递归创建文件夹三、fs.wirteFile()创建、写文件3.1 创建并写入一个文件3.2 重写文件并指定编...
    99+
    2024-04-02
  • Node.js文件操作详解
    Node有一组数据流API,可以像处理网络流那样处理文件,用起来很方便,但是它只允许顺序处理文件,不能随机读写文件。因此,需要使用一些更底层的文件系统操作。 本章覆盖了文件处理的基础知识,包括如何打开文件,...
    99+
    2022-06-04
    详解 操作 文件
  • C#对XmlHelper帮助类操作Xml文档的通用方法汇总
    目录前言C#XML基础入门对象序列化为XmlXml字符处理创建Xml文档Xml数据读取Xml插入数据Xml修改数据Xml删除数据完整的XmlHelper帮助类前言 该篇文章主要总结的...
    99+
    2024-04-02
  • 操作文件方法
    能调用方法的一定是对象文件操作中,读写不能同时进行想操作文件,首先要创建一个文件 1 '''第一,读文件''' 2 f=open('test','r',encoding='utf8') #这句就拿到了文件里面的所有内容...
    99+
    2023-01-30
    操作 文件 方法
  • Android Studio 引入 aidl 文件的方法汇总
    AndroidStudio 引入 aidl 文件,一般来说,有两种方法.第一种方法直接在 src/main 目录下新建 aidl 文件夹,并将我们的 aidl 文件放到该目录下。因为 AndroidStudio 默认的 aidl 文件默认配...
    99+
    2023-05-30
    android studio aidl
  • C语言关于文件的操作方法总结
    目录什么是文件程序文件数据文件文件名为什么要使用文件文件的操作文件缓冲区文件指针(FILE)文件的打开和关闭fopenfclose文件的打开方式流的相关概念文件的顺序读写fputcf...
    99+
    2024-04-02
  • Mysql DDL常见操作汇总
    库的管理 创建库 create database [if not exists] 库名; 删除库 drop databases [if exists] 库名; 建库通用的写法 drop...
    99+
    2022-05-16
    Mysql DDL操作
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作