core
    正在准备搜索索引...

    接口 YmxFileSystemManager

    文件管理器

    请使用 ymx.getFileSystemManager 获取文件管理器

    const fs = ymx.getFileSystemManager();
    await fs.exist({
    path: 'fs://file/my.txt'
    });
    //...
    • 文件路径统一采用 fs://{file|cache|temp}/your-sub-path 格式;
    • file 保存在应用沙箱文件目录,如 fs://file/my-file.txt
    • cache 保存在应用沙箱缓存目录,如 fs://cache/my-cache.txt
    • temp 保存在应用沙箱临时目录,如 fs://temp/my-temp.txt
    interface YmxFileSystemManager {
        copy(data: Path2): Promise<void>;
        exist(path: Path): Promise<boolean>;
        fileInfo(data: FileInfoData): Promise<FileInfoResult>;
        isDirectory(path: Path): Promise<boolean>;
        isFile(path: Path): Promise<boolean>;
        list(data: ListData): Promise<string[]>;
        mkdir(data: DirPath): Promise<void>;
        read(data: ReadFileData): Promise<ReadFileResult>;
        remove(data: Path): Promise<void>;
        rename(data: Path2): Promise<void>;
        stat(data: FilePath): Promise<StatResult>;
        toUri(data: Path): Promise<string>;
        truncate(data: TruncateData): Promise<void>;
        unzip(data: UnzipData): Promise<void>;
        write(data: WriteFileData): Promise<void>;
    }
    索引
    • 复制 fs:// 路径格式的文件或目录,如果目标目录不存在会自动创建。复制目录时会覆盖同名文件,保留目标目录中多余的文件。

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();
      await fs.copy({
      srcPath: 'fs://file/my_dir/my.txt',
      destPath: 'fs://file/your_dir/your.txt'
      });
    • 判断 fs:// 路径格式的文件/目录是否存在

      参数

      返回 Promise<boolean>

      const fs = ymx.getFileSystemManager();

      //文件是否存在
      await fs.exist({
      path: 'fs://file/my_dir/my.txt'
      });

      //目录是否存在
      await fs.exist({
      path: 'fs://file/my_dir/'
      });
    • 获取 fs:// 路径格式的文件大小、哈希摘要信息

      参数

      返回 Promise<FileInfoResult>

      const fs = ymx.getFileSystemManager();
      await fs.fileInfo({
      filePath: 'fs://file/my_dir/my.txt',
      digestAlgorithm: 'sha1'
      });
    • 判断 fs:// 路径格式的路径是否存在且为目录

      参数

      返回 Promise<boolean>

      const fs = ymx.getFileSystemManager();

      await fs.isDirectory({
      path: 'fs://file/my_dir/'
      });

      await fs.isDirectory({
      path: 'fs://file/my_dir-123/'
      });
    • 判断 fs:// 路径格式的路径是否存在且为文件

      参数

      返回 Promise<boolean>

      const fs = ymx.getFileSystemManager();

      await fs.isFile({
      path: 'fs://file/my_dir/my.txt'
      });

      await fs.isFile({
      path: 'fs://file/my_dir2/my-123.txt'
      });
    • 读取 fs:// 路径格式的目录内文件或子目录,以 fs:// 路径格式返回,如果以 / 结尾则的为目录。

      参数

      返回 Promise<string[]>

      const fs = ymx.getFileSystemManager();

      //递归列举指定目录下的文件
      await fs.list({
      dirPath: 'fs://file/',
      recursion: true
      });

      //列举指定目录下的文件和子目录
      await fs.list({
      dirPath: 'fs://file/',
      recursion: false
      });
    • 递归创建 fs:// 路径格式的目录

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();
      const dir = 'fs://file/dir1/dir2/dir3/';
      await fs.isDirectory({
      path: dir
      });
      await fs.mkdir({
      dirPath: dir
      });
    • 读 fs:// 路径格式的文件

      参数

      返回 Promise<ReadFileResult>

      const fs = ymx.getFileSystemManager();

      //读取返回 utf8 字符串
      const res = await fs.read({
      filePath: 'fs://file/my_dir/my.txt',
      encoding: 'utf8'
      });
      res.data;

      //读取返回 Base64 字符串
      const res = await fs.read({
      filePath: 'fs://file/my_dir/my.txt',
      encoding: 'base64'
      });
      res.data;

      //读取返回 Uint8Array 二进制
      const res = await fs.read({
      filePath: 'fs://file/my_dir/my.txt'
      });
      res.data;
    • 删除 fs:// 路径格式的文件或目录及其子目录

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();

      //删文件
      await fs.remove({
      path: 'fs://file/my_dir/my.txt',
      });

      //删目录及其子目录
      await fs.remove({
      path: 'fs://file/your_dir/',
      });
    • 重命名 fs:// 路径格式的文件或目录

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();
      await fs.rename({
      srcPath: 'fs://file/my_dir/my.txt',
      destPath: 'fs://file/my_dir/your.txt',
      });
    • 获取 fs:// 路径格式文件大小、修改时间等状态信息

      参数

      返回 Promise<StatResult>

      const fs = ymx.getFileSystemManager();
      await fs.stat({
      filePath: 'fs://file/my_dir/my.txt'
      });
    • fs:// 路径转换为 URI file://...,不验证文件或者目录是否存在。fs 路径无效返回空字符串

      参数

      返回 Promise<string>

      const fs = ymx.getFileSystemManager();

      //文件
      await fs.toUri({
      path: 'fs://file/my_dir/my.txt'
      });

      //目录
      await fs.toUri({
      path: 'fs://file/my_dir/'
      });
    • 对 fs:// 路径格式的文件内容进行截断操作

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();
      await fs.truncate({
      filePath: 'fs://file/my_dir/my.txt'
      });
    • 解压 fs:// 路径格式的 zip 文件到指定的 fs:// 路径目录,果目录不存在会自动创建目录。

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();

      //本地临时文件
      const localZipFile = 'fs://temp/my.zip';
      try {
      //下载
      await ymx.downloadFile({
      url: 'https://www.yimenapp.com/doc/www.zip',
      filePath: localZipFile
      });
      alert('已下载 zip 文件,即将解压。');
      const targetPath = 'fs://file/my-file/';
      //清空目标目录
      await fs.remove({ path: targetPath });
      //解压到目标目录
      await fs.unzip({
      zipFilePath: localZipFile,
      targetPath: targetPath
      });
      //递归列举目录文件
      const files = await fs.list({
      dirPath: targetPath,
      recursion: true
      });
      console.log('解压出的文件', files);
      } catch (err) {
      alert(`失败 ${err.message}`);
      } finally {
      //删除临时文件
      if (await fs.exist({ path: localZipFile })) {
      await fs.remove({ path: localZipFile });
      console.log(`已删除 ${localZipFile}`);
      }
      }
    • 覆盖或追加写文件写 fs:// 路径格式的文件,如果目录不存在会自动创建目录。

      参数

      返回 Promise<void>

      const fs = ymx.getFileSystemManager();

      //写入 utf8 文本
      await fs.write({
      filePath: 'fs://file/my_dir/my.txt',
      data: 'hello 世界'
      });

      //写入 Base64
      await fs.write({
      filePath: 'fs://file/my_dir/my.txt',
      data: '5L2g5aW95LiW55WM', //示例为 你好世界 的 Base64 编码
      encoding: 'base64'
      });

      //写入 Uint8Array 二进制
      const buffer = new TextEncoder().encode('你好 world');
      await fs.write({
      filePath: 'fs://file/my_dir/my.txt',
      data: buffer
      });

      await fs.write({
      filePath: 'fs://file/my_dir/my.txt',
      data: '🐭🐈等你'
      });
      //追加写入
      await fs.write({
      filePath: 'fs://file/my_dir/my.txt',
      data: '🐕😃来了',
      appendMode: true
      });
      //读取文件内容
      await fs.read({
      filePath: 'fs://file/my_dir/my.txt',
      encoding: 'utf8'
      });