| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 12-May-2024 | - | 36 | 33 | ||
| Library/src/main/ets/ | 12-May-2024 | - | 348 | 323 | ||
| entry/ | 12-May-2024 | - | 6,389 | 5,770 | ||
| hvigor/ | 12-May-2024 | - | 24 | 22 | ||
| oh_modules/ | 12-May-2024 | - | 13,764 | 10,266 | ||
| screenshots/ | 12-May-2024 | - | ||||
| .gitignore | D | 12-May-2024 | 103 | 8 | 7 | |
| README_zh.md | D | 12-May-2024 | 12.5 KiB | 160 | 128 | |
| build-profile.json5 | D | 12-May-2024 | 1.1 KiB | 45 | 45 | |
| hvigorfile.js | D | 12-May-2024 | 168 | 2 | 1 | |
| hvigorw | D | 12-May-2024 | 2 KiB | 62 | 28 | |
| hvigorw.bat | D | 12-May-2024 | 2 KiB | 73 | 56 | |
| oh-package-lock.json5 | D | 12-May-2024 | 1 KiB | 28 | 27 | |
| oh-package.json5 | D | 12-May-2024 | 816 | 26 | 25 | |
| ohosTest.md | D | 12-May-2024 | 7.6 KiB | 56 | 53 |
README_zh.md
1# 文件管理 2 3### 介绍 4 5本示例主要展示了文件管理相关的功能,使用[@ohos.multimedia.medialibrary](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-library-kit/js-apis-medialibrary.md) 、[@ohos.filemanagement.userFileManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-userFileManager-sys.md) 、[@ohos.fileio](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-fileio.md) 、[@ohos.file.fs](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-file-fs.md) 6 7等接口,实现了增添文件、删除文件、查找指定类型文件文件、复制并移动文件和预览图片、监听文件的功能; 8 9### 效果预览 10 11|首页|图片列表|图片预览|文档删除| 12|--------------------------------|--------------------------------|--------------------------------|--------------------------------| 13||||| 14 15使用说明 161. 在主界面,可以点击图片、视频、文档、音频等按钮进入对应目录的文件列表浏览界面; 172. 在文件列表浏览界面,点击“+”按钮,可以添加文件; 183. 在文件列表浏览界面,长按列表项会出现删除图片,点击删除图标可以删除文件; 194. 在图片文件列表界面,点击图片可以进入图片预览界面。 205. 在主页点击“我的手机”,进入应用沙箱目录下。 21 1. 点击左下角“新建文件夹”按钮,在弹窗中输入文件夹名称,点击弹窗中的“确定”按钮,完成创建。 22 23 2. 点击新建的文件夹,进入目录,在新目录中点击左下角的“新建文件”,在弹窗的窗口中填写文件名称,然后点击确定,完成创建。 24 25 3. 点击右上角多选按钮,选择需要重命名的文件(仅选中一个文件时可用),点击重命名,在弹窗中修改文件名称,点击“确定”,完成修改。 26 27 4. 点击右上角多选按钮,选择需要复制和移动的文件(可多选,并且不可移动到本身的子目录下),选中后点击左下角“复制和移动”按钮,在页面中点击目标目录会进入该目录,在目标目录下点击“移动到这”按钮,完成文件复制和移动。 28 29 5. 点击右上角多选按钮,选择需要删除的文件,选中后点击右下角“删除”按钮,在弹窗中点击“删除”,即可删除文件。 306. 在主页点击“监听文件”,进入文件监听页面。 31 1. 点击**添加监听**按钮,选择**IN_CREATE**监听,然后点击**确定**按钮,成功添加IN_CREATE监听。 32 2. 点击**添加**按钮,成功添加一个文件,触发事件后日志显示为相应日志:event:256,fileName为新增文件的路径。 33 3. 点击**停止监听**按钮,选择**IN_CREATE**监听,然后点击**确定**按钮,成功停止IN_CREATE监听。 34 4. 点击**添加**按钮,成功添加一个文件,触发事件后日志无变化。 35 5. 点击**添加监听**按钮,选择**IN_DELETE**监听,然后点击**确定**按钮,成功添加IN_DELETE监听。 36 6. 选择要删除的文件item,左滑后点击删除图标,成功删除一个文件,触发事件后日志显示为相应日志:event:512,fileName为删除文件的路径。 37 7. 点击**停止监听**按钮,选择**IN_DELETE**监听,然后点击**确定**按钮,成功停止IN_CREATE监听。 38 8. 选择要删除的文件item,左滑后点击删除图标,成功删除一个文件,触发事件后日志无变化。 39 9. 点击**添加监听**按钮,选择**IN_MODIFY**监听,然后点击**确定**按钮,成功添加IN_MODIFY监听。 40 10. 选择要编辑的文件item,左滑后点击编辑图标,进入文件编辑界面,修改文件名和文件内容,修改之后点击保存图标,页面显示的文件文件大小发生变化,然后点击返回图标后返回文件监听界面,查看触发事件后日志显示为相应日志:event:2,fileName为修改后文件的路径。IN_MODIFY监听只监听文件内容是否发生变化,若单独修改文件名,则不会更新监听日志。 41 11. 点击**停止监听**按钮,选择**IN_MODIFY**监听,然后点击**确定**按钮,成功停止IN_MODIFY监听。 42 12. 选择要编辑的文件item,左滑后点击编辑图标,进入文件编辑界面,修改文件名和文件内容,修改之后点击保存图标,页面显示的文件文件大小发生变化,然后点击返回图标后返回文件监听界面,查看触发事件后日志无变化。 43 44### 工程目录 45 46``` 47entry/src/main/ets/ 48|---Application 49|---common 50| |---Common.ts // 公用方法,如bufferToString 51| |---Logger.ts // 监听文件日志 52|---filemanager 53| |---data 54| | |---FileDataSource.ets // 懒加载数据格式 55| |---fileFs 56| | |---MyWatcher.ts // 预制10个文件进行监听,并对文件增删改进行处理,以及对添加watcher和删除watcher进行处理 57| |---pages 58| | |---audio 59| | | |---AudioFileList.ets // 音频列表页面 60| | |---common 61| | | |---FileList.ets // 同类型文件列表展示页面,接收文件类型,展示特定类型的文件列表 62| | |---document 63| | | |---DocumentFileList.ets // 文档列表页面 64| | |---image 65| | | |---ImageFileList.ets // 图片列表页面 66| | | |---ImagePreview.ets // 图片预览页面 67| | |---MyPhone 68| | | |---DeleteDialog.ets // 删除时的询问弹窗 69| | | |---InputNameDialog.ets // 新增文件时的输入框 70| | | |---MyPhone.ets // MyPhone主页 71| | |---video 72| | | |---VideoFileList.ets // 视频列表页面 73| | |---FileManagerHome.ets // 首页主体内容 74|---MainAbility 75|---pages 76| |---WatcherFile.ets // 监听文件页面,可对当前目录添加监听和停止监听,同时可以添加文件和删除文件并显示触发事件后日志 77| |---Index.ets // 首页 78| |---EditFile.ets // 文件编辑界面,可对文件名和文件内容进行修改,并可对文件的修改进行撤销 79Library/src/main/ets/ 80|---filemanager 81| |---components 82| | |---ThumbnailImage.ets // 缩略图组件 83| |---fileio 84| | |---FileIoManager.ts // 文件管理模块,封装了fileio的接口,实现MyPhone部分的功能 85| |---medialibrary 86| | |---MediaLibraryManager.ts // 主要封装了mediaLibrary库相关的接口,实现相关功能,如:对文件的增、删、查和图片预览功能 87| |---userfilemanager 88| | |---UserFileManager.ts // 封装userFileManager库相关的接口 89| |---FileManager.ts // 文件管理接口,统一封装了各模块对外提供的功能接口 90|---mock // 本地数据 91|---utils // 日志工具 92``` 93 94### 具体实现: 95 96* 增添文件、删除文件、查找指定类型文件文件和预览图片的功能接口封装在MediaLibraryManager,源码参考:[MediaLibraryManager.ts](Library/src/main/ets/filemanager/medialibrary/MediaLibraryManager.ts) 97 * 使用mediaLibrary.getMediaLibrary来获取MediaLibrary对象; 98 * 读取每个文件的数据:使用MediaLibrary.getFileAssets读取满足条件的文件集合FetchFileResult,然后调用FetchFileResult.getFirstObject(); 99 * 创建模拟文件:使用MediaLibrary.getPublicDirectory()获取系统预定的目录,然后使用MediaLibrary.createAsset(); 100 * 删除指定路径的文件:使用MediaLibrary.deleteAsset(); 101 * 获取预览图:使用image.createImageSource()创建指定的文件资源ImageSource,然后调用ImageSource.createPixelMap(),接口参考:[@ohos.multimedia.image](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-image-kit/js-apis-image.md) 。 102 103* MyPhone模块中的文件增删、复制移动、查找功能封装在FileSystem,源码参考:[FileIoManager.ets](Library/src/main/ets/filemanager/fileio/FileIoManager.ets) 。 104 * 读取文件列表:使用fileio.opendirSync()打开指定目录dir,然后使用dir.readSync()读取文件内容dirent,在调用dirent中相关api获取想要的文件参数; 105 * 创建目录:使用fileio.mkdirSync()创建文件夹; 106 * 创建文件:使用fileio.openSync()创建文件; 107 * 删除选中内容:使用fileio.rmdirSync()删除文件夹,使用fileio.unlinkSync()删除文件; 108 * 复制文件:使用fileio.copyFileSync()复制目标文件; 109 * 移动文件:使用fileio.mkdirSync()创建指定目录,再递归选中目录中的文件,将内部的文件创建到指定的位置。 110 111* 在Library模块中通过封装FileManager向外提供功能接口,如MediaLibraryManager.getPixelMapByFileAsset(),源码参考:[FileManager.ts](Library/src/main/ets/filemanager/FileManager.ts) 112 * 如效果预览中的**图片列表**,读取指定类型的文件:在[FileList.ets](entry/src/main/ets/filemanager/pages/common/FileList.ets) 113 中调用FileManager.getFileAssets(); 114 * 创建模拟文件:在[FileList.ets](entry/src/main/ets/filemanager/pages/common/FileList.ets) 115 中调用FileManager.createTxtFileAsset(); 116 * 删除指定路径的文件:在[FileList.ets](entry/src/main/ets/filemanager/pages/common/FileList.ets) 117 中调用FileManager.deleteFileAsset(); 118 * 获取缩略图:在[ThumbnailImage.ets](Library/src/main/ets/filemanager/components/ThumbnailImage.ets) 中调用FileManager.getThumbnail(); 119 * 如效果预览中的**图片预览**,获取预览图:在[ImagePreview.ets](entry/src/main/ets/filemanager/pages/image/ImagePreview.ets) 中调用FileManager.getPixelMapByFileAsset()。 120 121* 监听文件模块中的文件增删、查找、修改、监听功能封装在MyWatcher,源码参考:[MyWatcher.ts](ets/src/main/ets/filemanager/fileFs/MyWatcher.ts) 122 123 * 增加文件、删除文件、监听文件、停止监听文件:在[WatcherFile.ets](entry/src/main/ets/pages/WatcherFile.ets) 124 中调用MyWathcer.addFileToWatcher()、MyWathcer.deleteFileToWatcher()、MyWathcer.startWatcher(watcherName)、MyWathcer.stopWatcher(); 125 126 * 修改文件:在[EditFile.ets](entry/src/main/ets/pages/EditFile.ets) 127 128 中调用MyWatcher.modifyFileToWatcher()。 129 130### 相关权限 131 132[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionread_media) 133 134[ohos.permission.WRITE_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionwrite_media) 135 136[ohos.permission.FILE_ACCESS_MANAGER](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionfile_access_manager) 137 138[ohos.permission.STORAGE_MANAGER](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionstorage_manager) 139 140### 依赖 141 142不涉及 143 144### 约束与限制 145 1461. 本示例仅支持标准系统上运行,支持设备:RK3568; 1472. 本示例为Stage模型,仅支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0Release) 。 1483. 本示例涉及使用系统接口:@ohos.multimedia.mediaLibrary中的deleteAsset接口,需要手动替换Full SDK才能编译通过,具体操作可参考[替换指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/full-sdk-switch-guide.md) ; 1494. 本示例需要使用DevEco Studio 版本号(4.0Release)及以上版本才可编译运行。 1505. 本示例涉及系统接口,需要配置系统应用签名,可以参考[特殊权限配置方法](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/hapsigntool-overview.md) ,把配置文件中的“app-feature”字段信息改为“ohos_system_app”,再将“apl”字段信息改为“system_core”。 151 152### 下载 153 154如需单独下载本工程,执行如下命令: 155 156 git init 157 git config core.sparsecheckout true 158 echo code/BasicFeature/FileManager/FileManager/ > .git/info/sparse-checkout 159 git remote add origin https://gitee.com/openharmony/applications_app_samples.git 160 git pull origin master