在进行这些操作之前,需要在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. js获取当前系统时间

    Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份 ...

  2. awk命令速查

    awk与sed.grep一样都是为了加工数据流而做成的文本加工过滤器命令.awk会事先把输入的数据根据字段单位进行分割.在没有制定分割单位的情况下,以输入数据中的空格或Tab为分隔符.与sed相比,它 ...

  3. mybatis.net 多表联查

    mybatis.net针对多表联查,其实不用讲联查出的所有的列全部做一个新的resultMap,我们完全可以通过集成关系来实现,真是上一次说的懒加载,在一定程度上可以提高其性能,但这并不是说懒加载性能 ...

  4. web主题公园版权信息破解:script.js加密文件

    很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...

  5. Web安全之SQL注入攻击技巧与防范

    http://www.plhwin.com/2014/06/13/web-security-sql/

  6. 解决httpd: Could not reliably determine the server's fully qualified domain name

    解决方案: 用记事本打开 httpd.conf 将里面的 #ServerName localhost:80 注释去掉即可. 再执行 httpd 然后可以通过浏览器访问 http://localhost ...

  7. 网站设置404页面 --nginx

    有的时候根据域名要先知道用的什么web 服务器 最简单的 http://tool.chinaz.com/pagestatus/  输入域名,看返回的头部信息 用的那个web浏览器 下面的方法也是根据头 ...

  8. 2.4嵌套多重if else 的闰年判断以及bool变量的用法

    #include<stdio.h> #include<stdbool.h> int main() { int year; bool leap; //把leap定义为bool , ...

  9. vim 常用命令逐渐熟悉以及常用的配置记录

    本篇博客记录的是我自己学习vim的常用命令的过程中,各个命令的逐渐熟悉的顺序(有一部分已经熟悉的命令没有列出),已经对vim编辑器本身的一些设置的记录 1.G 快速将光标切换到文件的最底部 2.u 撤 ...

  10. SpingMvc中的异常处理

    一.处理异常的方式      Spring3.0中对异常的处理方法一共提供了两种: 第一种是使用HandlerExceptionResolver接口. 第二种是在Controller类内部使用@Exc ...