在进行这些操作之前,需要在js文件中导入fs模块

const fs = require("fs");
  • const是定义一个常量,比较特殊的是,使用const定义时必须赋值,一旦被赋值就不能再修改。

一、操作文件夹

  • 创建文件夹

    • fs.mkdir("test", function(err) {
      if (err) throw err;
      console.log("创建成功");
      })
  • 删除文件夹
    • fs.rmdir("test", err => {
      if (err) throw err;
      console.log("删除成功");
      })
  • 判断文件夹是否存在
    • exists方法现在已经不推荐使用了。
    • fs.exists("test", (exists)=> {
      if (exists) {
      console.log("存在");
      } else {
      console.log("不存在");
      }
      })
    • access方法在有的nodejs版本中需要写成  fs.constants.F_OK
    • fs.access('test', fs.constants.F_OK, (err) => {
      if(err) {
      console.log("文件夹不存在");
      return;
      }
      console.log("文件夹存在");
      })

二、操作文件

  • 写入文件

    • fs.writeFile("123.txt",  "hello word", err => {
      if(err) throw err;
      })
  • 追加文字
    • fs.appendFile("123.txt", "啦啦", err => {
      if(err) throw err;
      })
  • 修改文件名
    • fs.rename("C:/Users/Scr/Desktop/丽丽.bmp", "C:/Users/Scr/Desktop/lili.bmp", err => {
      if(err) throw err;
      console.log("ok");
      })
  • 删除文件
    • fs.unlink("123.txt", err => {
      if(err) throw err;
      console.log("删除完成");
      })
  • 获取文件相关属性
    • fs.stat("C:/Users/Scr/Desktop/lili.bmp", (err, stats) => {
      console.log(stats);
      })
  •  监视文件
    • fs.watchFile("123.txt", (curr, prev) => {
       
      console.log(curr.mtime);
      console.log(prev.mtime);
      })

      监视文件一般会有延迟,可以添加第二个参数,将延迟的时间缩短

    • fs.watchFile('123.txt', {persistent: true, interval: 10}, (curr, prev) => {
        //这里是使用的是模板拼接
      console.log(`the current mtime is: ${curr.mtime}`);
      console.log(`the previous mtime was: ${prev.mtime}`);
      });

三、文件流操作

一般拷贝文件的方法,适合拷贝小文件

"use strict";
const fs = require("fs");
//监视的文件
let currFile = "F:/BleRay.720P.rmvb";
//目标文件
let targetFile = "F:/movie";
//读文件的流
let rs = fs.createReadStream(currFile);
//写文件的流
let ws = fs.createWriteStream(targetFile);
//已经读取的文件大小
let currentCount = 0;
//文件的总大小
let fileSize = fs.statSync(currFile).size;
rs.on("data", (chunk) => {
currentCount += chunk.length;
//每一次获取到的数据---buffer
//console.log(chunk);
ws.write(chunk);
console.log("进度:" + currentCount/fileSize + "%");
})

文件流的方式拷贝

"use strict";
//监视的文件
let currFile = "F:/BleRay.720P.rmvb";
//目标文件
let targetFile = "F:/movie";
const fs = require("fs");
//读文件的流
let rs = fs.createReadStream(currFile);
//写文件的流
let ws = fs.createWriteStream(targetFile); //适合复制大文件,不能显示文件进度
rs.pipe(ws);

File System的简单操作的更多相关文章

  1. 【转】Android adb shell操作时出现“ XXX ... Read-only file system”解决办法--不错

    原文网址:http://blog.csdn.net/whu_zhangmin/article/details/25364349 手机连接PC后 adb shell su rm -r /system/a ...

  2. Android 操作文件系统失败: Read-only file system

    现象: $ adb push /d/Aaron/Desktop/libreference-ril-LS.so system/lib failed to copy 'D:/Aaron/Desktop/l ...

  3. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  4. Linux File System

    目录 . Linux文件系统简介 . 通用文件模型 . VFS相关数据结构 . 处理VFS对象 . 标准函数 1. Linux文件系统简介 Linux系统由数以万计的文件组成,其数据存储在硬盘或者其他 ...

  5. KASS分布式文件系统(Kass File System)

    KASS分布式文件系统(Kass File System),简称KFS,是开始公司自主研发的分布式文件存储服务平台.KFS系统架构及功能服务类似Hadoop/GFS/DFS,它通过HTTP-WEB为上 ...

  6. HTML5之本地文件系统API - File System API

    HTML5之本地文件系统API - File System API 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到 ...

  7. Csharp 简单操作Word模板文件

    原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档  Doc1.dot 内容为: To: <Name> Sub:<Subject> Website i ...

  8. 谷歌三大核心技术(一)The Google File System中文版

    谷歌三大核心技术(一)The Google File System中文版  The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个 ...

  9. Ceph: A Scalable, High-Performance Distributed File System译文

    原文地址:陈晓csdn博客 http://blog.csdn.net/juvxiao/article/details/39495037 论文概况 论文名称:Ceph: A Scalable, High ...

随机推荐

  1. Twisted随笔

    学习了socket后决定尝试使用框架,目标锁定了Twisted. 什么是Twisted? twisted是一个用python语言写的事件驱动的网络框架,他支持很多种协议,包括UDP,TCP,TLS和其 ...

  2. ubuntu用作开发办公平台的完美体验

    2016年6月3日 对于使用使用linux操作系统作为办公平台的新手来说很不适应,需要在多种方式中找到自己喜欢,适合自己的方式比较难.摸索了很久终于发现了一个适合我自己的使用方式了.这种方式也适合其他 ...

  3. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(一)

    Spring+MyBatis 首先要搭建的是Spring+MyBatis的整合框架,毕竟Spring是整个Web框架的核心部位,而数据库操作是一切测试的基础嘛. 目录结构 ━java ┣ contro ...

  4. UVA1637Double Patience(概率 + 记忆化搜索)

    训练指南P327 题意:36张牌分成9堆, 每堆4张牌.每次拿走某两堆顶部的牌,但需要点数相同.如果出现多种拿法则等概率的随机拿. 如果最后拿完所有的牌则游戏成功,求成功的概率. 开个9维数组表示每一 ...

  5. 第一个spring、springmvc、mybatis、freemarker项目小知识(一)

    1.持久层开发(Mybatis)    1.1 添加,非空字段必须给值,不是非空加判断,有值添加无值不添    1.2 删除,注意外键关系的级联删除.(事务传播行为)    1.3 更新,每个字段单独 ...

  6. List接口方法使用(PS:Java 编程思想阅读小结)

    1.用代码说话 package JavaProject; import java.util.*; public class A{ public static void main(String[]arg ...

  7. 2.5多重else嵌套的二次方程求根

    #include<stdio.h> #include<math.h> int main() { double a, b, c, disc, x1, x2, realpart, ...

  8. 使用xib封装一个view的步骤

    1.新建一个xib文件描述一个view的内部结构(假设叫做SSTgCell.xib) 2.新建一个自定义的类 (自定义类需要继承自系统自带的view, 继承自哪个类,  取决于xib根对象的Class ...

  9. 在sql语句中使用 xml for path 格式化字符串的方法总结

    此方法实现的是将查询表中的某个字段,格式化成  字符串1,字符串2,字符串3...的格式 假设我们现在有两个表 分别是 分组表 grouped和分组成员表 groupuser grouped表有连个字 ...

  10. GSM07.10协议中串口复用使用的校验算法

    ] = { 0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B ...