From e5728c498bfb8a7006dffa098cef2b6b7b35de15 Mon Sep 17 00:00:00 2001 From: wangminmin Date: Wed, 13 Jul 2022 17:41:24 +0800 Subject: [PATCH 1/3] add introduce file Signed-off-by: wangminmin --- FAF-introduce.md | 133 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 FAF-introduce.md diff --git a/FAF-introduce.md b/FAF-introduce.md new file mode 100644 index 00000000..a4b6387a --- /dev/null +++ b/FAF-introduce.md @@ -0,0 +1,133 @@ +# 用户公共文件访问框架-FileAccessFramework使用指导 + +## 简介 + +用户公共文件访问框架提供公共文件管理的接口。 + +FileAccessFramework基于extension机制,是一个C/S架构,分为2部分。一部分运行在客户端,当前支持picker和文件管理使用(目前只支持stage模型)。另外一部分运行在server端。目前提供数据的有媒体库和ExternalFileManager。 + +支持能力列举如下: +* GetRoots 获取设备根目录信息,包括URI、DisplayName、flag、type等。 +* listFile:获取下一级文件(夹)信息 +* createFile:创建文件 +* mkdir:创建目录 +* delete:删除文件(夹) +* move:移动文件(夹) +* rename:重命名文件(夹) + +接口详细信息见:d.ts文件地址: https://gitee.com/openharmony/interface_sdk-js/pulls/2010/ +注:不同设备的文件操作需要参考对应设备的支持规格。 + +## 仓目录结构 +仓目录结构如下: +``` +/foundation/storage/user_file_service +├── figures # 插图文件 +├── frameworks # FileAccessFramework框架层代码 +│ └── innerkits # 内部 Native 接口 +├── serivce # 服务实现 +│ ├── etc # 一期内部接口实现 +│ ├── src # 一期内部接口实现 +│ ├── file_extension_hap # ExternalFileManager实现 +├── interfaces # 接口代码 +│ └── kits # 外部 JS 接口 +│ ├── js # 一期napi代码实现 +│ └── napi # 二期napi代码实现 +├── BUILD.gn # 编译入口 +└── bundle.json # 部件描述文件 +``` + +## 使用说明 +### step0: import fileAccess from '@ohos.data.fileAccess' +### step1:创建FileAccessHelper对象 +```ets +import fileAccess from '@ohos.data.fileAccess' +let want = { + "bundleName": "com.ohos.UserFile.ExternalFileManager", + "abilityName": "FileExtensionAbility", +} +let fileAccessHelper = fileAccess.createFileAccessHelper(this.context, want); +``` +备注:目前**仅支持一对一,即链接一个数据方**,后续提供**数据提供方查询接口和一对多能力**。 +### step2: 获取数据提供方支持的所有设备根目录信息 + + +### step3: 对指定设备进行文件操作 +#### listfile +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/"; +fileAccessHelper.listFile(sourceUri, displayName, (ret, data)=> { + console.info("size " + data.length); + for (let i = 0; i < data.length; i++) { + console.info("name " + data[i].fileName); + } +}); +``` +#### createfile +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/"; +let displayName = "file1" +fileAccessHelper.createFile(sourceUri, displayName, (ret, data)=> { + if (ret.code >= 0 && data != "") { + console.info("createFile success"); + } else { + console.info("createFile fail"); + } +}); +``` +#### mkdir +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/dir"; +let displayName = "dir1" +fileAccessHelper.mkdir(sourceUri, displayName, (ret, data)=> { + if(ret.code >= 0 && data ==0){ + console.info("mkdir success"); + } else { + console.info("mkdir fail"); + } +}); +``` + +#### delete +```ets +let targetUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +fileAccessHelper.delete(targetUri, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("delete success"); + } else { + console.info("delete fail"); + } +}); +``` +#### move +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +let targetParentUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/dir" +fileAccessHelper.move(sourceUri, targetUri, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("move success"); + } else { + console.info("move fail"); + } +}); +``` +#### rename +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +let displayName = "fileNewName" +fileAccessHelper.rename(sourceUri, displayName, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("rename success"); + } else { + console.info("rename fail"); + } +}); +``` + +## 后续能力支持 +* 链接多个server端 +* 获取所有server端的所有设备根目录信息 +* 支持设备notify机制,支持业务方感知设备状态的变化 +* listfile和getroots返回迭代器对象,按照迭代器方式进行使用 + + -- Gitee From 5ed55c8f67d7b55b08f947137b11d1b1b20ede8d Mon Sep 17 00:00:00 2001 From: wangminmin Date: Wed, 13 Jul 2022 17:41:24 +0800 Subject: [PATCH 2/3] add introduce file Signed-off-by: wangminmin --- FAF-introduce.md | 133 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 FAF-introduce.md diff --git a/FAF-introduce.md b/FAF-introduce.md new file mode 100644 index 00000000..a4b6387a --- /dev/null +++ b/FAF-introduce.md @@ -0,0 +1,133 @@ +# 用户公共文件访问框架-FileAccessFramework使用指导 + +## 简介 + +用户公共文件访问框架提供公共文件管理的接口。 + +FileAccessFramework基于extension机制,是一个C/S架构,分为2部分。一部分运行在客户端,当前支持picker和文件管理使用(目前只支持stage模型)。另外一部分运行在server端。目前提供数据的有媒体库和ExternalFileManager。 + +支持能力列举如下: +* GetRoots 获取设备根目录信息,包括URI、DisplayName、flag、type等。 +* listFile:获取下一级文件(夹)信息 +* createFile:创建文件 +* mkdir:创建目录 +* delete:删除文件(夹) +* move:移动文件(夹) +* rename:重命名文件(夹) + +接口详细信息见:d.ts文件地址: https://gitee.com/openharmony/interface_sdk-js/pulls/2010/ +注:不同设备的文件操作需要参考对应设备的支持规格。 + +## 仓目录结构 +仓目录结构如下: +``` +/foundation/storage/user_file_service +├── figures # 插图文件 +├── frameworks # FileAccessFramework框架层代码 +│ └── innerkits # 内部 Native 接口 +├── serivce # 服务实现 +│ ├── etc # 一期内部接口实现 +│ ├── src # 一期内部接口实现 +│ ├── file_extension_hap # ExternalFileManager实现 +├── interfaces # 接口代码 +│ └── kits # 外部 JS 接口 +│ ├── js # 一期napi代码实现 +│ └── napi # 二期napi代码实现 +├── BUILD.gn # 编译入口 +└── bundle.json # 部件描述文件 +``` + +## 使用说明 +### step0: import fileAccess from '@ohos.data.fileAccess' +### step1:创建FileAccessHelper对象 +```ets +import fileAccess from '@ohos.data.fileAccess' +let want = { + "bundleName": "com.ohos.UserFile.ExternalFileManager", + "abilityName": "FileExtensionAbility", +} +let fileAccessHelper = fileAccess.createFileAccessHelper(this.context, want); +``` +备注:目前**仅支持一对一,即链接一个数据方**,后续提供**数据提供方查询接口和一对多能力**。 +### step2: 获取数据提供方支持的所有设备根目录信息 + + +### step3: 对指定设备进行文件操作 +#### listfile +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/"; +fileAccessHelper.listFile(sourceUri, displayName, (ret, data)=> { + console.info("size " + data.length); + for (let i = 0; i < data.length; i++) { + console.info("name " + data[i].fileName); + } +}); +``` +#### createfile +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/"; +let displayName = "file1" +fileAccessHelper.createFile(sourceUri, displayName, (ret, data)=> { + if (ret.code >= 0 && data != "") { + console.info("createFile success"); + } else { + console.info("createFile fail"); + } +}); +``` +#### mkdir +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/dir"; +let displayName = "dir1" +fileAccessHelper.mkdir(sourceUri, displayName, (ret, data)=> { + if(ret.code >= 0 && data ==0){ + console.info("mkdir success"); + } else { + console.info("mkdir fail"); + } +}); +``` + +#### delete +```ets +let targetUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +fileAccessHelper.delete(targetUri, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("delete success"); + } else { + console.info("delete fail"); + } +}); +``` +#### move +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +let targetParentUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/dir" +fileAccessHelper.move(sourceUri, targetUri, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("move success"); + } else { + console.info("move fail"); + } +}); +``` +#### rename +```ets +let sourceUri = "fileExtension://local/data/storage/el1/bundle/storage_daemon/file1"; +let displayName = "fileNewName" +fileAccessHelper.rename(sourceUri, displayName, (ret, data)=> { + if (ret.code >= 0 && data ==0){ + console.info("rename success"); + } else { + console.info("rename fail"); + } +}); +``` + +## 后续能力支持 +* 链接多个server端 +* 获取所有server端的所有设备根目录信息 +* 支持设备notify机制,支持业务方感知设备状态的变化 +* listfile和getroots返回迭代器对象,按照迭代器方式进行使用 + + -- Gitee From 78c4ec759464d65ebf54c08198dfed253910fdcf Mon Sep 17 00:00:00 2001 From: wangminmin Date: Wed, 21 Sep 2022 15:12:50 +0800 Subject: [PATCH 3/3] solve crycle dep Signed-off-by: wangminmin --- services/BUILD.gn | 5 ----- services/src/fileoper/oper_factory.cpp | 5 ----- services/src/server/file_manager_service.cpp | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/services/BUILD.gn b/services/BUILD.gn index c55f2cc0..325562d7 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -49,10 +49,6 @@ ohos_shared_library("fms_server") { sources = [ "src/client/file_manager_proxy.cpp", - "src/fileoper/ext_storage/ext_storage_subscriber.cpp", - "src/fileoper/ext_storage/storage_manager_inf.cpp", - "src/fileoper/external_storage_oper.cpp", - "src/fileoper/external_storage_utils.cpp", "src/fileoper/file_info.cpp", "src/fileoper/media_file_oper.cpp", "src/fileoper/media_file_utils.cpp", @@ -63,7 +59,6 @@ ohos_shared_library("fms_server") { deps = [ "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", - "//foundation/filemanagement/storage_service/interfaces/innerkits/storage_manager/native:storage_manager_sa_proxy", "//foundation/multimedia/media_library/frameworks/innerkitsimpl/media_library_helper:media_library", "//foundation/multimedia/media_library/frameworks/innerkitsimpl/medialibrary_data_extension:medialibrary_data_extension", ] diff --git a/services/src/fileoper/oper_factory.cpp b/services/src/fileoper/oper_factory.cpp index e0b8ea24..c91577e6 100644 --- a/services/src/fileoper/oper_factory.cpp +++ b/services/src/fileoper/oper_factory.cpp @@ -15,7 +15,6 @@ #include "oper_factory.h" -#include "external_storage_oper.h" #include "file_manager_service_def.h" #include "file_oper.h" #include "log.h" @@ -33,10 +32,6 @@ unique_ptr OperFactory::GetFileOper(int equipmentId) fp = make_unique(); break; } - case Equipment::EXTERNAL_STORAGE: { - fp = make_unique(); - break; - } default: { DEBUG_LOG("default FileOper %{public}d.", equipmentId); break; diff --git a/services/src/server/file_manager_service.cpp b/services/src/server/file_manager_service.cpp index 52525618..73eef345 100644 --- a/services/src/server/file_manager_service.cpp +++ b/services/src/server/file_manager_service.cpp @@ -31,7 +31,7 @@ void FileManagerService::OnDump() {} void FileManagerService::OnStart() { DEBUG_LOG("FileManagerService OnStart"); - ExtStorageSubscriber::Subscriber(); + //ExtStorageSubscriber::Subscriber(); bool res = Publish(this); if (!res) { ERR_LOG("FileManagerService OnStart invalid"); -- Gitee