• Home
Name Date Size #Lines LOC

..--

AppScope/12-May-2024-3633

Library/12-May-2024-837618

entry/12-May-2024-2,1571,932

screenshots/12-May-2024-

.gitignoreD12-May-202477 66

README_zh.mdD12-May-20249.5 KiB134106

build-profile.json5D12-May-20241.1 KiB4545

hvigorfile.jsD12-May-2024168 21

package.jsonD12-May-2024375 1918

README_zh.md

1# 文件管理
2
3### 介绍
4
5本示例主要展示了文件管理相关的功能,使用[@ohos.multimedia.medialibrary](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-medialibrary.md)
6、[@ohos.filemanagement.userFileManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-userFileManager.md)
7、[@ohos.fileio](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-fileio.md)
8等接口,实现了增添文件、删除文件、查找指定类型文件文件、复制并移动文件和预览图片的功能;
9
10### 效果预览
11
12|首页|图片列表|图片预览|文档删除|
13|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
14|![image](screenshots/main.png)|![image](screenshots/image_file_list.png)|![image](screenshots/image_preview.png)|![image](screenshots/document_list.png)|
15
16使用说明
171. 在主界面,可以点击图片、视频、文档、音频等按钮进入对应目录的文件列表浏览界面;
182. 在文件列表浏览界面,点击“+”按钮,可以添加文件;
193. 在文件列表浏览界面,长按列表项会出现删除图片,点击删除图标可以删除文件;
204. 在图片文件列表界面,点击图片可以进入图片预览界面。
215. 在主页点击“我的手机”,进入应用沙箱目录下。
22   1. 点击左下角“新建文件夹”按钮,在弹窗中输入文件夹名称,点击弹窗中的“确定”按钮,完成创建。
23
24   2. 点击新建的文件夹,进入目录,在新目录中点击左下角的“新建文件”,在弹窗的窗口中填写文件夹名称,然后点击确定,完成创建。
25
26   3. 点击右上角多选按钮,选择需要重命名的文件(仅选中一个文件时可用),点击重命名,在弹窗中修改文件名称,点击“确定”,完成修改。
27
28   4. 点击右上角多选按钮,选择需要复制和移动的文件(可多选,并且不可移动到本身的子目录下),选中后点击左下角“复制和移动”按钮,在页面中点击目标目录会进入该目录,在目标目录下点击“移动到这”按钮,完成文件复制和移动。
29
30   5. 点击右上角多选按钮,选择需要删除的文件,选中后点击右下角“删除”按钮,在弹窗中点击“删除”,即可删除文件。
31
32### 工程目录
33
34```
35entry/src/main/ets/
36|---Application
37|---filemanager
38|   |---data
39|   |   |---FileDataSource.ets             // 懒加载数据格式
40|   |---pages
41|   |   |---audio
42|   |   |   |---AudioFileList.ets          // 音频列表页面
43|   |   |---common
44|   |   |   |---FileList.ets               // 同类型文件列表展示页面,接收文件类型,展示特定类型的文件列表
45|   |   |---document
46|   |   |   |---DocumentFileList.ets       // 文档列表页面
47|   |   |---image
48|   |   |   |---ImageFileList.ets          // 图片列表页面
49|   |   |   |---ImagePreview.ets           // 图片预览页面
50|   |   |---MyPhone
51|   |   |   |---DeleteDialog.ets           // 删除时的询问弹窗
52|   |   |   |---InputNameDialog.ets        // 新增文件时的输入框
53|   |   |   |---MyPhone.ets                // MyPhone主页
54|   |   |---video
55|   |   |   |---VideoFileList.ets          // 视频列表页面
56|   |   |---FileManagerHome.ets            // 首页主体内容
57|---MainAbility
58|---pages
59|   |---index.ets                          // 首页
60Library/src/main/ets/
61|---filemanager
62|   |---components
63|   |   |---ThumbnailImage.ets             // 缩略图组件
64|   |---fileio
65|   |   |---FileIoManager.ts               // 文件管理模块,封装了fileio的接口,实现MyPhone部分的功能
66|   |---medialibrary
67|   |   |---MediaLibraryManager.ts         // 主要封装了mediaLibrary库相关的接口,实现相关功能,如:对文件的增、删、查和图片预览功能
68|   |---userfilemanager
69|   |   |---UserFileManager.ts             // 封装userFileManager库相关的接口
70|   |---FileManager.ts                     // 文件管理接口,统一封装了各模块对外提供的功能接口
71|---mock                                   // 本地数据
72|---utils                                  // 日志工具
73```
74
75### 具体实现:
76
77* 增添文件、删除文件、查找指定类型文件文件和预览图片的功能接口封装在MediaLibraryManager,源码参考:[MediaLibraryManager.ts](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/Library/src/main/ets/filemanager/medialibrary/MediaLibraryManager.ts)
78    * 使用mediaLibrary.getMediaLibrary来获取MediaLibrary对象;
79    * 读取每个文件的数据:使用MediaLibrary.getFileAssets读取满足条件的文件集合FetchFileResult,然后调用FetchFileResult.getFirstObject();
80    * 创建模拟文件:使用MediaLibrary.getPublicDirectory()获取系统预定的目录,然后使用MediaLibrary.createAsset();
81    * 删除指定路径的文件:使用MediaLibrary.deleteAsset();
82    * 获取预览图:使用image.createImageSource()创建指定的文件资源ImageSource,然后调用ImageSource.createPixelMap(),接口参考:[@ohos.multimedia.image](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-image.md)83
84* MyPhone模块中的文件增删、复制移动、查找功能封装在FileSystem,源码参考:[FileIoManager.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/Library/src/main/ets/filemanager/fileio/FileIoManager.ets)85  * 读取文件列表:使用fileio.opendirSync()打开指定目录dir,然后使用dir.readSync()读取文件内容dirent,在调用dirent中相关api获取想要的文件参数;
86  * 创建目录:使用fileio.mkdirSync()创建文件夹;
87  * 创建文件:使用fileio.openSync()床架文件;
88  * 删除选中内容:使用fileio.rmdirSync()删除文件夹,使用fileio.unlinkSync()删除文件;
89  * 复制文件:使用fileio.copyFileSync()复制目标文件;
90  * 移动文件:使用fileio.mkdirSync()创建指定目录,再递归选中目录中的文件,将内部的文件创建到指定的位置。
91
92* 在Library模块中通过封装FileManager向外提供功能接口,如MediaLibraryManager.getPixelMapByFileAsset(),源码参考:[FileManager.ts](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/Library/src/main/ets/filemanager/FileManager.ts)
93    * 如效果预览中的**图片列表**,读取指定类型的文件:在[FileList.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/entry/src/main/ets/filemanager/pages/common/FileList.ets)
94      中调用FileManager.getFileAssets();
95    * 创建模拟文件:在[FileList.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/entry/src/main/ets/filemanager/pages/common/FileList.ets)
96      中调用FileManager.createTxtFileAsset();
97    * 删除指定路径的文件:在[FileList.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/entry/src/main/ets/filemanager/pages/common/FileList.ets)
98      中调用FileManager.deleteFileAsset();
99    * 获取缩略图:在[ThumbnailImage.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/Library/src/main/ets/filemanager/components/ThumbnailImage.ets) 中调用FileManager.getThumbnail();
100    * 如效果预览中的**图片预览**,获取预览图:在[ImagePreview.ets](https://gitee.com/openharmony/applications_app_samples/blob/master/FileManager/FileManager/entry/src/main/ets/filemanager/pages/image/ImagePreview.ets) 中调用FileManager.getPixelMapByFileAsset()。
101
102### 相关权限
103
104[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionread_media)
105
106[ohos.permission.WRITE_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionwrite_media)
107
108[ohos.permission.FILE_ACCESS_MANAGER](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionfile_access_manager)
109
110[ohos.permission.STORAGE_MANAGER](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionstorage_manager)
111
112### 依赖
113
114不涉及
115
116### 约束与限制
117
1181. 本示例仅支持标准系统上运行,支持设备:RK3568;
1192. 本示例仅支持API9版本SDK,版本号:3.2.9.2,本示例涉及使用系统接口:@ohos.multimedia.mediaLibrary中的deleteAsset接口,需要手动替换Full SDK才能编译通过,具体操作可参考[替换指南](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/quick-start/full-sdk-switch-guide.md/)1203. 本示例需要使用DevEco Studio 3.1 Canary1 (Build Version: 3.1.0.100, built on November 3, 2022)才可编译运行;
1214. 本示例涉及系统接口,需要配置系统应用签名,可以参考[特殊权限配置方法](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/security/hapsigntool-overview.md/),把配置文件中的“app-feature”字段信息改为“hos_system_app”。
122
123### 下载
124
125如需单独下载本工程,执行如下命令:
126
127    ```
128    git init
129    git config core.sparsecheckout true
130    echo FileManager/FileManager/ > .git/info/sparse-checkout
131    git remote add origin https://gitee.com/openharmony/applications_app_samples.git
132    git pull origin master
133    ```
134