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",     //文件修改时间
} 
