fs
fs
fs模块提供了文件操作的接口
fs模块
名称 | 类型 | 参数 | 返回值 | 说明 |
---|---|---|---|---|
openFile | 方法 | path:string,flags?:string[] | File | 创建/打开文件 |
mkdir | 方法 | path:string | void | 创建文件夹 |
remove | 方法 | path:string | void | 删除文件/文件夹/子文件夹 |
rename | 方法 | oldPath:string, newPath:string | void | 修改文件或目录的名称,或者将文件或目录移动到新的位置 |
stat | 方法 | path:string | object | 获取文件/目录的信息 |
readDir | 方法 | path:string | object[] | 获取目录中的所有文件或子目录列表 |
openFile
创建或打开文件。
语法
fs.openFile(path:string,flags?:string[]);
参数
- path:string 文件路径,支持绝对路径和相对路径
- flag?:string[] (可选)文件打开模式,默认值:
readOnly
flag可选值
readOnly
只读writeOnly
只写readWrite
读写create
创建append
追加excl
文件存在时不覆盖。与 create 一起使用,文件必须不存在trunc
如果文件存在,则清空文件。sync
同步写入模式打开文件。数据在写入时不会被缓存在内存中,而是立即写入磁盘或其他存储设备
示例
import {fs} from "core";
//创建或打开文件。
let file = fs.openFile("/Desktop/1.txt");
// 带参数的打开并读写文件
let file1 = fs.openFile("/Desktop/test.txt", ["create", "readWrite"]);
file1.write("hello world");
//关闭文件
file1.close();
mkdir
创建文件夹,如果失败则会抛异常
语法
fs.mkdir(path:string);
参数
- path:string 文件夹路径,支持绝对路径和相对路径
示例
import {fs} from "core";
//创建文件夹
fs.mkdir("/Desktop/temp/fs");
remove
删除文件\文件夹及其子文件夹和文件,如果失败则会抛异常
语法
fs.remove(path:string);
参数
- path:string 文件夹路径,支持绝对路径和相对路径
示例
import {fs} from "core";
//删除文件夹及其子文件夹和文件
fs.remove("/Desktop/temp/fs");
rename
用于修改文件或目录的名称,或者将文件或目录移动到新的位置
语法
fs.rename(oldPath, newPath);
参数
示例
import {fs} from "core";
//文件重命名
fs.rename("/Desktop/temp/fs/1.js", "/Desktop/temp/fs/2.js");
使用场景
函数可以用于多种场景,包括:
- 重命名文件:可以用于重命名文件,例如修改文件名或文件扩展名。
- 移动文件:如果 newPath 包含不同的目录路径,可以实现文件的移动操作。
- 重命名目录:不仅可以用于文件,也可以用于目录的重命名或移动。
注意事项
rename
方法的行为在不同的操作系统上可能略有不同。在某些操作系统上,文件或目录不能跨文件系统移动。- 目标路径 newPath 如果已经存在,会导致重命名失败并抛异常。
stat
获取文件信息
语法
fs.stat(path:string);
参数
- path:string 文件/目录路径,支持绝对路径和相对路径
示例
let stat = fs.stat("/Users/xxx/Desktop/xx.txt");
console.log(stat);
结果
{
"dev": 16777229, // 文件所在设备的设备号
"ino": 44283510, // 文件的索引节点号.文件系统中标识文件的唯一标识符。
"mode": "-rw-r--r--", // 文件的模式和权限信息.表示文件的读、写、执行权限和文件类型(如普通文件、目录、符号链接等)。
"nlink": 1, // 硬链接的数量,表示指向此文件的目录条目的数量。
"uid": 501, // 文件所有者的用户ID
"gid": 20, // 文件所有者的组ID
"rdev": 0, // 若此文件为设备文件,则为设备的设备号。对于普通文件,该值一般为零。
"size": 100, // 文件的大小,以字节为单位
"blksize": 4096, // 文件系统I/O操作的块大小
"blocks": 8, // 分配给文件的块数量
"atimeMs": 1721121766929, // 上次访问时间,以毫秒为单位
"mtimeMs": 1721121766927, // 上次修改时间,以毫秒为单位
"ctimeMs": 1721121766927, // 上次状态改变时间,以毫秒为单位
"birthtimeMs": 1718849916610 // 文件创建时间,以毫秒为单位。对于某些文件系统,创建时间可能不可用。
}
readDir
获取目录中的所有文件或子目录列表
语法
fs.readDir(path:string);
参数
- path:string 目录路径,支持绝对路径和相对路径
示例
import {fs} from "core";
//获取文件列表
fs.readDir("/Desktop/temp/fs");
结果
[{
"name": "test1", //文件或目录名称
"isDir": true, //是否目录
}, {
"name": "test2.js", //文件或目录名称
"isDir": false, //是否目录
}]
File
File
代表一个打开的文件对象
名称 | 类型 | 返回值 | 说明 |
---|---|---|---|
stat | 方法 | object | 获取文件信息 |
stat
获取有关文件的状态信息
let file = fs.openFile("/Users/xxx/Desktop/xx.txt");
console.log(file.stat());
file.close();
打印结果如下:
{
"isDir": false, //是否文件夹
"size": 64, //文件大小
"name": "xx.txt", //文件名
"fullName": "/Users/lzp/Desktop/xx.txt", //文件全名
"modTime": "[object date] 2024-03-27 14:07:24", //文件修改时间
}