检查文件是否存在,查询文件信息

  1. fs.stat()
 fs.stat('./server.js', function (err, stat) {
if (stat && stat.isFile()) {
console.log('文件存在');
} else {
console.log('文件不存在或不是标准文件');
}
console.log(stat)
});
  • [x] 判断文件是否存在

  • [x] 不能判断目录

  • [x] 查询文件信息

  • [x] 打印结果:

 文件存在
Stats {
dev: 2052,
mode: 33279,
nlink: 1,
uid: 1000,
gid: 1000,
rdev: 0,
blksize: 4096,
ino: 515557,
size: 10,
blocks: 1,
atimeMs: 1536141106630.312,
mtimeMs: 1536141106580.8394,
ctimeMs: 1536141106580.8394,
birthtimeMs: 1536141106580.8394,
atime: 2018-09-05T09:51:46.630Z,
mtime: 2018-09-05T09:51:46.581Z,
ctime: 2018-09-05T09:51:46.581Z,
birthtime: 2018-09-05T09:51:46.581Z }
  1. fs.access()
fs.access('/server.js', function(err) {
console.log(err ? '文件存在' : '文件不存在');
});

判断文件是否存在

fs.access('./server.js', fs.R_OK | fs.W_OK, function(err) {
console.log(err ? '不可操作!' : '可以读/写');
});
fs.access()用于检查到指定path路径的目录或文件的访问权限。其回调函数中有一个参数(err),如果检查失败则会出现错误参数的响应。mode是要检查的权限掩码,它可以是以下枚举值之一:
  • fs.F_OK - 文件是对于进程是否可见,可以用来检查文件是否存在。也是mode 的默认值
  • fs.R_OK - 文件对于进程是否可读
  • fs.W_OK - 文件对于进程是否可写
  • fs.X_OK - 文件对于进程是否可执行。(Windows系统不可用,执行效果等同fs.F_OK)

打开文件

fs.open('./server.js','r',function(err,fd){
// 在这里通过文件描述fs对文件进行操作
})
fs.open()方法第一个参数是文件路径。每二个参数是标志位,标志位表示文件的打开模式。标志含义与UNIX中fopen的标识位相同:
  • r 打开文本文件进行读取,数据流位置在文件起始处
  • r+ 打开文本文件进行读写,数据流位置在文件起始处
  • w 如果文件存在,将其清零,不存在创建写入文件。数据流位置在文件起始处
  • w+ 打开文件进行读写,如果文件存在,将其清零,不存在创建写入文件。数据流位置在文件起始处
  • a 打开文件写入数据,如果文件存在,将其清零,不存在创建写入文件。数据流位置在文件结尾处,此后的写操作都将数据追加到文件后面
  • a+ 打开文件进行文件读写,如果文件存在,将其清零,不存在创建写入文件。数据流位置在文件结尾处,此后的写操作都将数据追加到文件后面

关闭文件


fs.open('./server.js', 'a', function (err, fd) {
//对文件一些操作 //操作完成后,关闭文件
fs.close(fd, function(err){
})
})

文件目录操作

当我们需要对目录进行操作时,可以用node的fs模块提供的目录操作相关方法:mkidr,readdir,rmdir

  1. 使用fs.mkdir创建目录
fs.mkdir('./test/2',function(err){
if(err){
console.log(err)
}
})

目录里多了一个test文件夹

2. 使用fs.readdir进行目录读取

fs.readdir('./test',function(err,files){
if (err) {
console.log(err)
}
console.log(files)
})

test目录下有1和2两个文件夹控制台输出[ '1', '2' ]

3. 使用fs.rmdir进行目录删除

fs.rmdir('./test/2',function(err){
if(err){
console.log(err)
}
})

当目录非空、路径错误、非目录时异常会发生,此时文件夹被删除了

文件目录的重命名,和文件的删除

  1. 使用fs.rename对文件或者目录进行重命名
fs.rename('./test','./test1',function(err){
if(err) throw err;
console.log('目录重命名完成')
})

将test重命名为test1

fs.rename('./test/1/test.js','./test/1/test1.js',function(err){
if(err) throw err;
console.log('文件重命名完成')
})
  1. 使用fs.unlink删除文件
fs.unlink('./test/1/test1.js', function(err) {
if (err) throw err;
console.log('文件删除成功');
});

删除了test1.js文件

文件的读写

node提供read,write,readFile,createReadStream, writeFile, createWriteStream来对文件进行读写

使用fs.writeFile()方法向./text.txt文件写入内容:

fs.writeFile('./test.txt', '测试', function(err){
if(err){
console.log(err);
}
})

使用fs.readFile()方法读./text.txt文件全部内容:

fs.readFile('./test.txt', function(err, data){
//文件内容
console.log(data.toString());
})

打印结果为'测试'

fs模块提供了创建文件可读流与创建文件可写读的方法:fs.createReadStream()和fs. createWriteStream(),这两个方法分别分返回一个Readable Stream对象和Writable Stream对象。通过这两个对象,我们可以基于流的文件处理,在读写大文件及基于流的转接、暂停、读取等操作方面有很大的作用。

let readStream = fs.createReadStream('./test.txt') // 创建可读流
let writeStream = fs.createWriteStream('./server.js') // 创建可写流 readStream.on('data', function(data){
writeStream.write(data)
})

读取text.txt的内容,将其写入到server.js中,会覆盖server.js原有内容

【node】fs模块,文件和目录的操作的更多相关文章

  1. node fs模块

    Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile( ...

  2. 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法

    配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...

  3. Python::OS 模块 -- 文件和目录操作

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...

  4. nodejs - fs模块 - 文件操作

    1, fs.stat  检测是文件还是目录 2, fs.mkdir 创建目录 var fs = require('fs') fs.mkdir('./dir',function(err){ if(err ...

  5. Perl文件、目录常用操作

    注意,这些操作的对象是文件名(相对路径/绝对路径),而非文件/目录句柄,句柄只是perl和文件系统中文件的关联通道,而非实体对象. 创建文件 在unix类操作系统中有一个touch命令可以非常方便的创 ...

  6. FileDirLocationOperator - 文件或目录位置操作.

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Move ...

  7. Python模块: 文件和目录os+shutil

    一 常用函数 os模块 os.sep 表示默认的文件路径分隔符,windows为\, linux为/os.walk(spath): 用来遍历目录下的文件和子目录os.listdir(dirname): ...

  8. Java——文件及目录File操作

    API file.listFiles(); //列出目录下所有文件及子目录fileList[i].isFile() //判断是否为文件 fileList[i].isDirectory() //判断是否 ...

  9. Python之文件操作:文件、目录的操作

    一.创建 1.创建文件 open(path,'w') 2.创建目录 (1)os.mkdir(pt[, mode=0777]) 新建一个目录pt,参数mode表示生成的目录的权限,默认是超级权限,也就是 ...

随机推荐

  1. Spring中AOP切面编程学习笔记

    注解方式实现aop我们主要分为如下几个步骤: 1.在切面类(为切点服务的类)前用@Aspect注释修饰,声明为一个切面类. 2.用@Pointcut注释声明一个切点,目的是为了告诉切面,谁是它的服务对 ...

  2. VSTO学习(六)——创建Outlook解决方案

    本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我 ...

  3. EF基础知识小记三(设计器=>数据库)

    本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1.通过EF设计器创建一个简单模型 (1).右键目标项目添加新建项 (2).选择ADO.Net ...

  4. 【jQuery源码】工具函数

    //扩展工具函数 jQuery.extend({ // Unique for each copy of jQuery on the page expando: "jQuery" + ...

  5. C++中各种类的大小

    注:本文测试实例使用的编译器版本为clang-703.0.29,系统int长度为4字节,指针长度为8字节. 1. 空类 class A {}; 空类sizeof的结果为1,为什么不是0呢?因为C++标 ...

  6. IntelliJ IDEA使用心得之非Maven项目篇

    今天和大家分享下非Maven项目在IDEA中的配置方法,由于非Maven项目的配置方法基本相同,所以此篇只对不同点进行说明. 1.声明依赖库 我们可以使用库的方式来添加项目依赖,这是一个非常好的实践. ...

  7. [转] Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程

    点击这里查看原文 译者:GuiltyMan 本文由 Linux公社翻译组 原创翻译  Linux公社 诚意奉献 更多请访问此处博客网站 VMware workstation 是一个可以进行桌面操作的虚 ...

  8. cmake:用add_subdirectory()添加外部项目文件夹

    一般情况下,我们的项目各个子项目都在一个总的项目根目录下,但有的时候,我们需要使用外部的文件夹,怎么办呢? add_subdirectory命令,可以将指定的文件夹加到build任务列表中.下面是将与 ...

  9. C#的OpenFileDialog的简单用法

    1.OpenFileDialog 中文名字叫做 打开文件对话框 OpenFileDialog的效果如图: private void btnSelectFile_Click(object sender, ...

  10. JDK的spi实现

    SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里有比较详细的介绍.简 ...