Nodejs模块:fs
/**
* @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的更多相关文章
- nodejs模块——fs模块
fs模块用于对系统文件及目录进行读写操作. 一.同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式. 异步方法中回调函数的第一个参数总是留给异常参数(exce ...
- nodejs模块——fs模块 读取文件
readFile读取文件 fs.readFile(filename,[option],callback) 方法读取文件. 参数说明: filename String 文件名 option Object ...
- 深入Nodejs模块fs - 文件系统操作
node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作.文档组织的很好,操作基本分为文件操作.目录操作.文件信息.流这个大方面,编程方式也支持同步.异步和 Promise. 本文 ...
- nodejs模块fs——文件操作api
// fs模块常用api // 读取文件 .写入文件 .追加文件. 拷贝文件 .删除文件 // 读取文件 // fs.readFile(path[, options], callback) // fs ...
- nodejs模块——fs模块 使用fs.write读文件
fs.write() fs.read(fd,buffer,offset,length[,position],callback(err,bytesWritten,buffer))接收6个参数. 参数说明 ...
- nodejs模块——fs模块 使用fs.read读文件
使用fs.read读文件 fs.read() 先介绍fs.open. fs.open(path,flags,[mode],callback)方法用于打开文件,以便fs.read()读取. 参数说明: ...
- nodejs模块——fs模块 WriteFile写入文件
WriteFile写入文件 使用fs.writeFile(filename,data,[options],callback)写入内容到文件. 参数说明: filename String 文件名 dat ...
- Nodejs:fs模块 & rimraf模块
模块fs:可以通过他管理文件系统,文件的写入,删除等操作 模块rimraf: 递归删除文件的node插件,在项目的文件编译之前,可以清除dist文件夹里的内容 API样例: var fs = ...
- nodejs 模块恩仇录
anywhere 一句话:随时随地将你的当前目录变成一个静态文件服务器的根目录. 安装 npm install anywhere -g anywhere -h localhost -p 8060 fa ...
- nodejs nodejs模块使用及简单的示例
nodejs模块使用及简单的示例 参考菜鸟教程网:http://www.runoob.com/ 一.fs模块的使用: 1.文件操作: 读文件: //读文件 var fs=require('fs'); ...
随机推荐
- 强烈推荐 16 款 IDEA 插件,让你的开发速度飞起来!
当前使用的IDEA版本是2020.1.随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐.以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件. 1 g ...
- ES集群部署
1.环境准备 主机名 IP地址 CPU 内存 硬盘 gztxy-prd-es01 192.168.1.11 8 16 200 gztxy-prd-es01 192.168.1.12 8 16 200 ...
- Axios源码分析
Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中. 文档地址:https://github.com/axios/axios axios理解和使用 1.请求配置 { // ...
- 第二次作业:卷积神经网络 part 2
第二次作业:卷积神经网络 part 2 问题总结 输出层激活函数是否有必要? 为什么DnCNN要输出残差图片?图像复原又该如何操作? DSCMR中的J2损失函数效果并不明显,为什么还要引入呢? 代码练 ...
- Spring的第一个程序
目录 一.Spring概述 1. Spring是什么? 2. IOC控制反转 二.Spring的第一个程序 1. 创建Maven项目 2. 加入maven依赖pom.xml 3. 定义接口和实体类 4 ...
- Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器
基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...
- CTFhub-WEB前置-http协议闯关
前情提要: 在渗透学习过程中,web的基础知识很重要,在这里通过long long ago之前学习的http基础,并结合网上的CTFhub--WEB前置之http协议闯关,对web基础知识进行加固并查 ...
- 通过http、https域名访问静态网页、nginx配置负载均衡(nginx配置)
很多场景下需要可以通过浏览器访问静态网页,不想把服务器ip地址直接暴露出来,通过nginx可以解决这个问题. 实现http域名访问静态网页 1.域名解析配置(本文都是以阿里云为例,其他平台,操作步骤类 ...
- SG 函数学习
\(Mex\) 运算 \(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即: \[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \ ...
- 图论算法(五)最小生成树Prim算法
最小生成树\(Prim\)算法 我们通常求最小生成树有两种常见的算法--\(Prim\)和\(Kruskal\)算法,今天先总结最小生成树概念和比较简单的\(Prim\)算法 Part 1:最小生成树 ...