npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

capacitor-advanced-file-manager

v0.6.1

Published

Advanced file manager plugin for Capacitor with comprehensive file system operations including browse, create, edit, delete, move, copy, and search files and directories.

Downloads

2,673

Readme

capacitor-advanced-file-manager

Advanced file manager plugin for Capacitor with comprehensive file system operations including browse, create, edit, delete, move, copy, and search files and directories.

🏗️ 架构特性

  • 核心功能:完整的文件系统操作 API
  • 模块化扩展:按需导入高级功能模块
  • 跨平台支持:Android、iOS、Web 统一 API
  • 类型安全:完整的 TypeScript 类型定义

📦 可用模块

| 模块 | 功能 | 状态 | |------|------|------| | 核心 | 基础文件操作 | ✅ 已完成 | | /search | 高级文件搜索 | ✅ 已完成 | | /batch | 批量文件操作 | ✅ 已完成 | | /utils | 文件工具集 | 🚧 开发中 | | /web-enhanced | Web端增强功能 | ✅ 已完成 | | /preview | 文件预览 | 📋 计划中 | | /share | 文件分享 | 📋 计划中 |

Install

npm install capacitor-advanced-file-manager
npx cap sync

🚀 快速开始

基础使用

import { AdvancedFileManager } from 'capacitor-advanced-file-manager';

// 列出目录内容
const files = await AdvancedFileManager.listDirectory({
  path: '/storage/emulated/0',
  showHidden: false
});

// 创建文件
await AdvancedFileManager.createFile({
  path: '/storage/emulated/0/test.txt',
  content: 'Hello World!'
});

模块化使用

// 按需导入高级功能模块
import { FileSearch } from 'capacitor-advanced-file-manager/search';
import { BatchOperations } from 'capacitor-advanced-file-manager/batch';
import { WebEnhancedFileManager } from 'capacitor-advanced-file-manager/web-enhanced';

// 文件搜索
const results = await FileSearch.search({
  directory: '/storage/emulated/0',
  query: '*.jpg',
  recursive: true
});

// 批量操作
await BatchOperations.batchDelete([
  '/path/to/file1.txt',
  '/path/to/file2.txt'
]);

// Web端增强功能 - 突破浏览器文件限制
await WebEnhancedFileManager.initializeWebFS({
  useOPFS: true,              // 使用 Origin Private File System
  enableIndexedDBCache: true, // 启用 IndexedDB 缓存
  useWebWorkers: true         // 使用 Web Workers 处理大文件
});

📖 详细使用指南

API

requestPermissions()

requestPermissions() => Promise<PermissionResult>

Returns: Promise<PermissionResult>


checkPermissions()

checkPermissions() => Promise<PermissionResult>

Returns: Promise<PermissionResult>


openSystemFilePicker(...)

openSystemFilePicker(options: SystemFilePickerOptions) => Promise<SystemFilePickerResult>

| Param | Type | | ------------- | --------------------------------------------------------------------------- | | options | SystemFilePickerOptions |

Returns: Promise<SystemFilePickerResult>


openSystemFileManager(...)

openSystemFileManager(path?: string | undefined) => Promise<void>

| Param | Type | | ---------- | ------------------- | | path | string |


openFileWithSystemApp(...)

openFileWithSystemApp(filePath: string, mimeType?: string | undefined) => Promise<void>

| Param | Type | | -------------- | ------------------- | | filePath | string | | mimeType | string |


listDirectory(...)

listDirectory(options: ListDirectoryOptions) => Promise<ListDirectoryResult>

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | ListDirectoryOptions |

Returns: Promise<ListDirectoryResult>


createDirectory(...)

createDirectory(options: CreateDirectoryOptions) => Promise<void>

| Param | Type | | ------------- | ------------------------------------------------------------------------- | | options | CreateDirectoryOptions |


deleteDirectory(...)

deleteDirectory(options: FileOperationOptions) => Promise<void>

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | FileOperationOptions |


createFile(...)

createFile(options: CreateFileOptions) => Promise<void>

| Param | Type | | ------------- | --------------------------------------------------------------- | | options | CreateFileOptions |


readFile(...)

readFile(options: ReadFileOptions) => Promise<ReadFileResult>

| Param | Type | | ------------- | ----------------------------------------------------------- | | options | ReadFileOptions |

Returns: Promise<ReadFileResult>


writeFile(...)

writeFile(options: WriteFileOptions) => Promise<void>

| Param | Type | | ------------- | ------------------------------------------------------------- | | options | WriteFileOptions |


deleteFile(...)

deleteFile(options: FileOperationOptions) => Promise<void>

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | FileOperationOptions |


moveFile(...)

moveFile(options: MoveFileOptions) => Promise<void>

| Param | Type | | ------------- | ----------------------------------------------------------- | | options | MoveFileOptions |


copyFile(...)

copyFile(options: CopyFileOptions) => Promise<void>

| Param | Type | | ------------- | ----------------------------------------------------------- | | options | CopyFileOptions |


renameFile(...)

renameFile(options: RenameFileOptions) => Promise<void>

| Param | Type | | ------------- | --------------------------------------------------------------- | | options | RenameFileOptions |


getFileInfo(...)

getFileInfo(options: FileOperationOptions) => Promise<FileInfo>

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | FileOperationOptions |

Returns: Promise<FileInfo>


exists(...)

exists(options: FileOperationOptions) => Promise<{ exists: boolean; }>

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | FileOperationOptions |

Returns: Promise<{ exists: boolean; }>


searchFiles(...)

searchFiles(options: SearchFilesOptions) => Promise<SearchFilesResult>

| Param | Type | | ------------- | ----------------------------------------------------------------- | | options | SearchFilesOptions |

Returns: Promise<SearchFilesResult>


searchContent(...)

searchContent(options: SearchContentOptions) => Promise<SearchContentResult>

原生层内容搜索(避免 OOM) 在原生层执行搜索,只返回匹配结果,不返回完整文件内容

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | SearchContentOptions |

Returns: Promise<SearchContentResult>


readFileRange(...)

readFileRange(options: ReadFileRangeOptions) => Promise<ReadFileRangeResult>

读取文件指定行范围

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | ReadFileRangeOptions |

Returns: Promise<ReadFileRangeResult>


insertContent(...)

insertContent(options: InsertContentOptions) => Promise<void>

在指定行插入内容

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | InsertContentOptions |


replaceInFile(...)

replaceInFile(options: ReplaceInFileOptions) => Promise<ReplaceInFileResult>

查找并替换文件内容

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | ReplaceInFileOptions |

Returns: Promise<ReplaceInFileResult>


applyDiff(...)

applyDiff(options: ApplyDiffOptions) => Promise<ApplyDiffResult>

应用 diff 补丁

| Param | Type | | ------------- | ------------------------------------------------------------- | | options | ApplyDiffOptions |

Returns: Promise<ApplyDiffResult>


getFileHash(...)

getFileHash(options: GetFileHashOptions) => Promise<GetFileHashResult>

获取文件哈希值

| Param | Type | | ------------- | ----------------------------------------------------------------- | | options | GetFileHashOptions |

Returns: Promise<GetFileHashResult>


getLineCount(...)

getLineCount(options: FileOperationOptions) => Promise<GetLineCountResult>

获取文件行数

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | FileOperationOptions |

Returns: Promise<GetLineCountResult>


echo(...)

echo(options: { value: string; }) => Promise<{ value: string; }>

| Param | Type | | ------------- | ------------------------------- | | options | { value: string; } |

Returns: Promise<{ value: string; }>


Interfaces

PermissionResult

| Prop | Type | | ------------- | -------------------- | | granted | boolean | | message | string |

SystemFilePickerResult

| Prop | Type | Description | | ----------------- | ------------------------------- | ----------- | | files | SelectedFileInfo[] | 选择的文件信息列表 | | directories | SelectedFileInfo[] | 选择的目录信息列表 | | cancelled | boolean | 是否被用户取消 |

SelectedFileInfo

| Prop | Type | Description | | -------------- | ---------------------------------- | ----------------- | | name | string | 文件名 | | path | string | 文件路径(可能是真实路径或URI) | | uri | string | 原始URI(移动端) | | size | number | 文件大小 | | type | 'file' | 'directory' | 文件类型 | | mimeType | string | MIME类型 | | mtime | number | 修改时间 | | ctime | number | 创建时间 |

SystemFilePickerOptions

| Prop | Type | Description | | -------------------- | -------------------------------------------- | ----------- | | type | 'file' | 'directory' | 'both' | 选择类型 | | multiple | boolean | 是否允许多选 | | accept | string[] | 文件类型过滤 | | startDirectory | string | 起始目录 | | title | string | 标题 |

ListDirectoryResult

| Prop | Type | | ---------------- | ----------------------- | | files | FileInfo[] | | totalCount | number |

FileInfo

| Prop | Type | | ----------------- | ---------------------------------- | | name | string | | path | string | | size | number | | type | 'file' | 'directory' | | mtime | number | | ctime | number | | permissions | string | | isHidden | boolean |

ListDirectoryOptions

| Prop | Type | | ---------------- | -------------------------------------------------- | | path | string | | showHidden | boolean | | sortBy | 'name' | 'size' | 'mtime' | 'type' | | sortOrder | 'asc' | 'desc' |

CreateDirectoryOptions

| Prop | Type | | --------------- | -------------------- | | path | string | | recursive | boolean |

FileOperationOptions

| Prop | Type | | ---------- | ------------------- | | path | string |

CreateFileOptions

| Prop | Type | | -------------- | ------------------------------- | | path | string | | content | string | | encoding | 'utf8' | 'base64' |

ReadFileResult

| Prop | Type | | -------------- | ------------------- | | content | string | | encoding | string |

ReadFileOptions

| Prop | Type | | -------------- | ------------------------------- | | path | string | | encoding | 'utf8' | 'base64' |

WriteFileOptions

| Prop | Type | | -------------- | ------------------------------- | | path | string | | content | string | | encoding | 'utf8' | 'base64' | | append | boolean |

MoveFileOptions

| Prop | Type | | --------------------- | ------------------- | | sourcePath | string | | destinationPath | string |

CopyFileOptions

| Prop | Type | | --------------------- | -------------------- | | sourcePath | string | | destinationPath | string | | overwrite | boolean |

RenameFileOptions

| Prop | Type | | ------------- | ------------------- | | path | string | | newName | string |

SearchFilesResult

| Prop | Type | | ---------------- | ----------------------- | | files | FileInfo[] | | totalFound | number |

SearchFilesOptions

| Prop | Type | | ---------------- | ------------------------------------------ | | directory | string | | query | string | | searchType | 'name' | 'content' | 'both' | | fileTypes | string[] | | maxResults | number | | recursive | boolean |

SearchContentResult

内容搜索结果

| Prop | Type | Description | | ------------------ | -------------------------------------- | ----------------- | | results | ContentSearchFileResult[] | 搜索结果列表 | | totalFiles | number | 总匹配文件数 | | totalMatches | number | 总匹配数 | | duration | number | 搜索耗时(毫秒) | | skippedFiles | number | 被跳过的文件数(因文件过大等原因) |

ContentSearchFileResult

单个文件的内容搜索结果

| Prop | Type | Description | | --------------- | ---------------------------------------------- | ----------- | | path | string | 文件路径 | | name | string | 文件名 | | matchType | 'content' | 'both' | 'filename' | 匹配类型 | | matches | ContentMatch[] | 匹配列表 | | score | number | 相关性评分 |

ContentMatch

内容搜索匹配项

| Prop | Type | Description | | ----------------- | ------------------- | ------------------- | | lineNumber | number | 匹配的行号 (1-based) | | lineContent | string | 匹配的行内容 | | context | string | 匹配的上下文(带高亮标记位置) | | matchStart | number | 匹配开始位置(在 context 中) | | matchEnd | number | 匹配结束位置(在 context 中) |

SearchContentOptions

内容搜索选项

| Prop | Type | Description | | ----------------------- | --------------------- | -------------------------- | | directory | string | 搜索目录 | | keyword | string | 搜索关键词 | | caseSensitive | boolean | 是否区分大小写 | | fileExtensions | string[] | 文件扩展名过滤(如 ['.md', '.txt']) | | maxFiles | number | 最大搜索文件数 | | maxFileSize | number | 最大文件大小(字节),超过的文件将被跳过 | | maxMatchesPerFile | number | 每个文件最大匹配数 | | contextLength | number | 上下文长度(匹配前后的字符数) | | maxDepth | number | 最大递归深度 | | recursive | boolean | 是否递归搜索子目录 |

ReadFileRangeResult

| Prop | Type | Description | | ---------------- | ------------------- | ------------ | | content | string | 读取到的内容 | | totalLines | number | 文件总行数 | | startLine | number | 实际读取的起始行 | | endLine | number | 实际读取的结束行 | | rangeHash | string | 内容哈希(用于冲突检测) |

ReadFileRangeOptions

| Prop | Type | Description | | --------------- | ------------------------------- | ------------------ | | path | string | | | startLine | number | 起始行号 (1-based) | | endLine | number | 结束行号 (1-based, 包含) | | encoding | 'utf8' | 'base64' | 编码方式 |

InsertContentOptions

| Prop | Type | Description | | ------------- | ------------------- | ---------------------------- | | path | string | | | line | number | 插入位置的行号 (1-based),内容将插入到该行之前 | | content | string | 要插入的内容 |

ReplaceInFileResult

| Prop | Type | Description | | ------------------ | -------------------- | ----------- | | replacements | number | 替换的次数 | | modified | boolean | 是否有修改 |

ReplaceInFileOptions

| Prop | Type | Description | | ------------------- | -------------------- | ------------- | | path | string | | | search | string | 要查找的字符串或正则表达式 | | replace | string | 替换为的内容 | | isRegex | boolean | 是否使用正则表达式 | | replaceAll | boolean | 是否替换所有匹配项 | | caseSensitive | boolean | 是否区分大小写 |

ApplyDiffResult

| Prop | Type | Description | | ------------------ | -------------------- | --------------- | | success | boolean | 是否成功应用 | | linesChanged | number | 修改的行数 | | linesAdded | number | 添加的行数 | | linesDeleted | number | 删除的行数 | | backupPath | string | 备份文件路径(如果创建了备份) |

ApplyDiffOptions

| Prop | Type | Description | | ------------------ | -------------------- | -------------------- | | path | string | | | diff | string | Unified diff 格式的补丁内容 | | createBackup | boolean | 是否创建备份 |

GetFileHashResult

| Prop | Type | Description | | --------------- | ------------------- | ----------- | | hash | string | 文件哈希值 | | algorithm | string | 使用的算法 |

GetFileHashOptions

| Prop | Type | Description | | --------------- | ------------------------------ | ----------- | | path | string | | | algorithm | 'md5' | 'sha256' | 哈希算法 |

GetLineCountResult

| Prop | Type | Description | | ----------- | ------------------- | ----------- | | lines | number | 文件行数 |