/**
* @description fs模块常用api
*/ // fs所有的文件操作都是异步IO,如果要以同步的方式去调用,都会加一个在原同步api的基础上加Sync
// 同步的方式会在最后传入一个callback,异步的方式不会传callback
// 异步的缺陷就是无法控制异常,只能用try catch const fs = require('fs');
const path = require('path'); const fileReadPath = path.resolve(__dirname, 'demoRead.txt'); // 读取文件
// readFile readFileSync
try {
const data = fs.readFileSync(fileReadPath, 'utf8');
// console.log(data)
} catch(err) {
console.error('读取文件出错: ', err.message)
fs.writeFileSync(fileReadPath, '123,123,423');
} fs.readFile(fileReadPath, 'utf8', function(err, data) {
if (err) return console.error('读取文件出错: ', err.message)
console.log('文件内容: ', data)
}) // 读取文件夹,相当于获取当前文件夹内所有目录
// readdir readdirSync
// 返回一个数组,里面是所有文件的路径path
const readdir = fs.readdirSync(path.resolve(__dirname, '../fs'));
console.log(readdir) const fileWritePath = path.resolve(__dirname, 'demoWrite.html'); // 写入文件
// 异步的写入,callback传的是error
// writeFile writeFileSync
fs.writeFile(fileWritePath, '<html>123123</html>', function(err) {
if (err) throw err;
// console.log('写入成功')
}) try {
fs.writeFileSync(fileWritePath, '<html>123123</html>');
// console.log('写入成功')
} catch(err) {
console.log(err)
} const dirPath1 = path.resolve(__dirname, 'demoDir1'); // 创建目录
// mkdir mkdirSync
fs.mkdir(dirPath1, function(err) {
if (err) {
// console.log(err)
return
};
// console.log('创建目录成功')
}) const dirPath2 = path.resolve(__dirname, 'demoDir2'); try {
fs.mkdirSync(dirPath2);
fs.writeFileSync(dirPath2 + '/demoDir2File.txt', 'dqwdjwdojdojqwd');
fs.mkdirSync(dirPath2 + '/balabala');
fs.writeFileSync(dirPath2 + '/balabala/balabalaFile.txt', 'dqwdjwdojdojqwd');
} catch(err) {
// console.log(err);
} // 检查是否存在
// existsSync
const isExists = fs.existsSync(path.resolve(__dirname, 'demoRead.txt'));
console.log('isExists: ', isExists) // callback的exists已经快不用了,现在用access
fs.access(path.resolve(__dirname, 'demoRead.txt'), function(err) {
if (err) console.log(err)
console.log('有这个文件的')
}); // 判断是一个文件夹还是一个文件,先获取文件stat,然后调用方法
// stat statSync
// isDirectory() isFile()
const stat = fs.statSync(path.resolve(__dirname, 'demoDir1'));
if (stat.isDirectory()) {
console.log('当前是一个文件夹')
} else if (stat.isFile()) {
console.log('当前是一个文件')
} else {
console.log('既不是文件也不是文件夹');
} // 删除文件
// unlink unlinkSync
const filePath = path.resolve(__dirname, 'demoRead.txt');
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath);
console.log('删除文件成功')
} // 删除文件夹
// rmdir rmdirSync
// 注意,如果文件夹里还有文件夹,则删除会报错,要删除的文件夹必须是全是文件,或者没有,不能有文件夹
// 如果有,必须递归删除
if (fs.existsSync(dirPath2)) {
try {
fs.rmdirSync(dirPath2);
} catch(err) {
delDir(dirPath2)
}
console.log('删除文件夹成功')
} // 递归删除文件或文件夹
function delDir(filePath) {
if (fs.existsSync(filePath)) {
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
// 当前是文件夹,需要判断里面是否还有文件夹
// 需要遍历文件夹内的所有文件,并判断是否是文件夹或文件,即递归调用
const files = fs.readdirSync(filePath);
files.forEach(function(item) {
delDir(path.resolve(filePath, item));
});
fs.rmdirSync(filePath);
} else if (stat.isFile()) {
// 当前是文件,直接删除
fs.unlinkSync(filePath);
}
} else {
console.log('不存在该文件!')
}
}

  

Nodejs模块:fs的更多相关文章

  1. nodejs模块——fs模块

    fs模块用于对系统文件及目录进行读写操作. 一.同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式. 异步方法中回调函数的第一个参数总是留给异常参数(exce ...

  2. nodejs模块——fs模块 读取文件

    readFile读取文件 fs.readFile(filename,[option],callback) 方法读取文件. 参数说明: filename String 文件名 option Object ...

  3. 深入Nodejs模块fs - 文件系统操作

    node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作.文档组织的很好,操作基本分为文件操作.目录操作.文件信息.流这个大方面,编程方式也支持同步.异步和 Promise. 本文 ...

  4. nodejs模块fs——文件操作api

    // fs模块常用api // 读取文件 .写入文件 .追加文件. 拷贝文件 .删除文件 // 读取文件 // fs.readFile(path[, options], callback) // fs ...

  5. nodejs模块——fs模块 使用fs.write读文件

    fs.write() fs.read(fd,buffer,offset,length[,position],callback(err,bytesWritten,buffer))接收6个参数. 参数说明 ...

  6. nodejs模块——fs模块 使用fs.read读文件

    使用fs.read读文件 fs.read() 先介绍fs.open. fs.open(path,flags,[mode],callback)方法用于打开文件,以便fs.read()读取. 参数说明: ...

  7. nodejs模块——fs模块 WriteFile写入文件

    WriteFile写入文件 使用fs.writeFile(filename,data,[options],callback)写入内容到文件. 参数说明: filename String 文件名 dat ...

  8. Nodejs:fs模块 & rimraf模块

      模块fs:可以通过他管理文件系统,文件的写入,删除等操作 模块rimraf: 递归删除文件的node插件,在项目的文件编译之前,可以清除dist文件夹里的内容   API样例: var fs = ...

  9. nodejs 模块恩仇录

    anywhere 一句话:随时随地将你的当前目录变成一个静态文件服务器的根目录. 安装 npm install anywhere -g anywhere -h localhost -p 8060 fa ...

  10. nodejs nodejs模块使用及简单的示例

    nodejs模块使用及简单的示例 参考菜鸟教程网:http://www.runoob.com/ 一.fs模块的使用: 1.文件操作: 读文件: //读文件 var fs=require('fs'); ...

随机推荐

  1. bzoj 2839 集合计数 容斥\广义容斥

    LINK:集合计数 容斥简单题 却引出我对广义容斥的深思. 一直以来我都不理解广义容斥是为什么 在什么情况下使用. 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致. 特点: ...

  2. Golang SQL连接池梳理

    目录 一.如何理解数据库连接 二.连接池的工作原理 三.database/sql包结构 四.三个重要的结构体 4.1.DB 4.2.driverConn 4.3.Conn 五.流程梳理 5.1.先获取 ...

  3. 【HNOI2009】最小圈 题解(SPFA判负环+二分答案)

    前言:模拟赛考试题,不会做,写了个爆搜滚蛋仍然保龄. --------------------- 题目链接 题目大意:给定一张有向图,求一个环,使得这个环的长度与这个环的大小(所含结点个数)的比值最小 ...

  4. Kaggle-pandas(4)

    Grouping-and-sorting 教程 映射使我们可以一次将整个列中的数据转换为DataFrame或Series中的一个值. 但是,通常我们希望对数据进行分组,然后对数据所在的组进行特定的操作 ...

  5. 安装mpi的那些坑

    安装mpi可以用 yum 安装 具体从操作步骤可参考这个链接mpi的yum安装方式 mpi在linux下 使用root权限 会报错   修改方式有两种 1 2.换其他账户 mpi会自行评估我们cpu的 ...

  6. 【LeetCode/LintCode】 题解丨字节跳动试题:第k大的子数组

    给定一个长度为n的数组a,它有n(n+1)/2​​个子数组.请计算这些子数组的和,然后按照升序排列,并返回排序后第k个数. 1≤n≤10​^5 1≤a​i≤10^​9 1≤k≤​n(n+1)/2 在线 ...

  7. 【高阶版】Python词典

    使用dict.fromkeys()创建词典的一个坑 创建词典有三种方法,第一是直接赋值,d = {1:2, 2:3}:第二个是,通过构造方法,d = dict([(1, 2), (2, 3)]),第三 ...

  8. 在不影响程序使用的情况下添加shellcode

    参考 在文章Backdooring PE Files with Shellcode中介绍了一种在正常程序中注入shellcode的方式,让程序以前的逻辑照常能够正常运行,下面复现一下并解决几个小问题. ...

  9. 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  10. Jmeter 常用函数(18)- 详解 __isDefined

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 判断 Jmeter 变量是否存在,1 就 ...