判断是文件还是文件夹
同步
1 | const fs = require('fs'); |
异步
1 | const fs = require('fs'); |
创建文件夹
同步
1 | const fs = window.require('fs'); // 引入文件系统模块 |
异步
1 | const fs = window.require('fs'); // 引入文件系统模块 |
创建多层目录
1 | const path = require("path"); |
同步
1 | const path = require("path"); |
获取文件所在文件夹
推荐方式
1 | const path = window.require("path"); |
Electron渲染进程中的代码示例:
1 | const path = window.require("path"); |
注意
Electron渲染进程中获取path,一定要添加window.
;
1 | const path = window.require("path"); |
千万不要用以下两种
1 | import path from "path"; |
这两中方式引用的并不是NodeJS的path,在Windows下这样获取的path.sep
是/
,而不是\
,导致以下的方法都会出现问题。
下面就是引用path错误导致的两种问题:
错误示例1
1 | const path = require("path"); |
结果
exepath D:\Project\Electron\school_live_client\node_modules\electron\dist\electron.exe
path.sep /
mypath D:\Project\Electron\school_live_client\node_modules\electron\dist
path.resolve(exepath, ‘..’) /
path.dirname(exepath) .
filepath D:\Project\Electron\school_live_client\node_modules\electron\dist\electron.exe/_temp/1.jpg
错误示例2
dirname
方法获取的是正确的,而resolve
获取的路径最前面会多一个/
。
1 | const path = require("path"); |
结果
mypath D:/Project/Electron/school_live_client/node_modules/electron/dist/_temp
mypath2 /D:/Project/Electron/school_live_client/node_modules/electron/dist/_temp
判断文件和文件夹是否存在
同步
1 | if(!fs.existsSync(mypath)) { |
异步
1 | fs.exists("dirName", function(exists) { |
删除文件夹及文件
1 | var fs = require('fs'); // 引入fs模块 |
文件读取写入
创建文件
1 | fs.access(filename, fs.constants.F_OK, (err) => { |
读取文件内容
同步读取
1 | var fs=require("fs"); |
异步读取
1 | var fs=require("fs"); |
写入文件内容
同步写入
1 | fs.writeFileSync(filename,data,[options]) |
示例
1 | const fs = require('fs') |
默认情况下,此API将替换文件的内容
(如果已经存在)。
您可以通过指定标志来修改默认值:
1 | fs.writeFile('/Users/me/test.txt', content, { flag: 'a+' }, (err) => {}) |
您可能会使用的标志是
r+
打开文件进行读写w+
打开文件进行读写,将流放在文件的开头。 如果不存在则创建文件
打开一个文件进行写入,将流放在文件末尾。 如果不存在则创建文件a+
打开文件进行读写,将流放在文件末尾。 如果不存在则创建文件
您可以在https://nodejs.org/api/fs.html#fs_file_system_flags中找到更多标志
异步写入
1 | fs.writeFile(filename,data,[options],callback); |
参数说明
filename:文件名
data:需要写入的数据
option:options参数值为一个对象,参数如下
flag属性:用于指定对该文件采取何种操作,默认值为’w’(文件不存在时创建该文件,文件已存在时重写该文件),可指定值及其含义与readFile方法中使用的options参数值中的flag属性的可指定值及其含义相同。
mode属性:用于指定当文件被打开时对该文件的读写权限,默认值为0666(可读写)。该属性值及fs模块中的各方法中的mode参数值的指定方法均如下所示:使用4个数字组成mode属性值或?mode参数值,其中第一个数字必须是0,第二个 数字用于规定文件或目录所有者的权限,第三个数字用于规定文件或目录所有者所属用户组的权限,第四个数字规定其他人的权限。可以设定的数字如下所示:
- 1:执行权限
- 2:写权限
- 4:读权限
encoding属性:用于指定使用何种编码格式来写入该文件。可指定属性值为“utf8”、“ascii”与“base64”。
当data参数值为一个Buffer对象时该属性值被忽略,使用默认编码格式utf8来执行文件的写入。
callback:回调函数
同步追加内容到文件底部
1 | fs.appendFileSync(filename,data,[options]) |
异步追加内容到文件底部
1 | fs.appendFile(filename,data,[options],callback) |
文件流写入
1 | const fs = require('fs') |
获取文件夹下文件
1 | const path = require("path"); |
调用
1 | const { mapDirAll } = require("../utils/fileutil"); |
路径操作
获取路径文件名
path.basename(path[, ext])
获取路径中的文件名+文件扩展名
如果设置第二个参数表示过滤“.扩展名”,只要文件名称
示例:
1 | const path = require('path'); |
获取路径中目录名
path.dirname() 方法返回 path 的目录名,类似于 Unix 的 dirname 命令。 尾部的目录分隔符将被忽略,参阅 path.sep。
1 | var parseUrl = path.parse(url); |
路径分割符
path.sep 路径分割符
提供平台特定的路径片段分隔符:
Windows 上是 \。
POSIX 上是 /。
1 | //例如,在 POSIX 上: |
获取当前文件的 根目录
1 | global.appRoot = path.resolve(__dirname); |
注意
__dirname
当前目录
__filename
当前文件绝对路径
文件重命名
同步
1 | const fs = window.require("fs"); |
异步
1 | const fs = window.require("fs"); |