• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 文件管理变更说明
2
3## cl.file.1 @ohos.file.storageStatistics和@ohos.file.volumeManager 文档错误码变更
4
5[@ohos.file.storageStatistics](../../../application-dev/reference/apis/js-apis-file-storage-statistics.md#)和[@ohos.file.volumeManager](../../../application-dev/reference/apis/js-apis-file-volumemanager.md#)两个模块中所有接口Unknown error错误码变更, d.ts中记录的错误码与实际功能代码中返回的不相符。
6
7变更前每个接口Unknown error的错误码为13900032。
8
9变更后每个接口Unknown error的错误码为13900042。
10
11**变更影响**
12
13功能代码中,针对“Unknown error”从首版本开始一直返回13900042,仅接口定义d.ts文件与API文档记录错误。
14
15对原来的“13900032 Unknown error”进行了特殊处理的应用,需要进行排查,并修改为139000342。
16
17**关键接口/组件变更**
18
19涉及@ohos.file.storageStatistics模块和@ohos.file.volumemanager模块中的所有接口。
20
21**适配指导**
22
23针对Unknown error进行特殊处理的应用需要将错误码更改为13900042。
24
25## cl.file.2 userFileManager FileAsset属性变更
26
27[userFileManager.FileAsset](../../../application-dev/reference/apis/js-apis-userFileManager.md#fileasset)属性变更。
28
29变更前uri的格式为:
30
31'file://media/\<file_type\>/\<file_id\>/?networkid=xxx'
32
33变更后uri的格式为:
34
35'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg'
36
37**变更影响**
38
39基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。
40
41**关键接口/组件变更**
42
43| 模块名                    | 方法/属性/枚举/常量                                          | 变更类型 |
44| ------------------------- | ------------------------------------------------------------ | -------- |
45| userFileManager   |   **interface** FileAsset | 属性变更     |
46
47**适配指导**
48
49在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。
50
51**正确示例:**
52
53```js
54import userFileManager from '@ohos.filemanagement.userFileManager';
55import dataSharePredicates from '@ohos.data.dataSharePredicates';
56
57async function example() {
58  let context = getContext(this);
59  let mgr = userFileManager.getUserFileMgr(context);
60  let predicates = new dataSharePredicates.DataSharePredicates();
61  let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。
62  predicates.equalTo('uri', uri);
63  let fetchOptions = {
64    fetchColumns: ['uri'],
65    predicates: predicates
66  };
67
68  mgr.getPhotoAssets(fetchOptions, async (err, fetchResult) => {
69    if (fetchResult != undefined) {
70      console.info('fetchResult success');
71      let fileAsset = await fetchResult.getFirstObject();
72      if (fileAsset != undefined) {
73        console.info('fileAsset.displayName : ' + fileAsset.displayName);
74      }
75    } else {
76      console.error('fetchResult fail' + err);
77    }
78  });
79}
80```
81
82## cl.file.3 photoAccessHelper PhotoAsset属性变更
83
84[photoAccessHelper.PhotoAsset](../../../application-dev/reference/apis/js-apis-photoAccessHelper.md#photoasset)属性变更。
85
86变更前uri的格式为:
87
88'file://media/\<file_type\>/\<file_id\>/?networkid=xxx'
89
90变更后uri的格式为:
91
92'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg'
93
94**变更影响**
95
96基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。
97
98**关键接口/组件变更**
99
100| 模块名                    | 方法/属性/枚举/常量                                          | 变更类型 |
101| ------------------------- | ------------------------------------------------------------ | -------- |
102| photoAccessHelper   |   **interface** PhotoAsset | 属性变更     |
103
104**适配指导**
105
106在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。
107
108**正确示例:**
109
110```js
111import photoAccessHelper from '@ohos.file.photoAccessHelper';
112import dataSharePredicates from '@ohos.data.dataSharePredicates';
113
114async function example() {
115  let context = getContext(this);
116  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
117  let predicates = new dataSharePredicates.DataSharePredicates();
118  let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。
119  predicates.equalTo('uri', uri);
120  let fetchOptions = {
121    fetchColumns: ['uri'],
122    predicates: predicates
123  };
124
125  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
126    if (fetchResult != undefined) {
127      console.info('fetchResult success');
128      let photoAsset = await fetchResult.getFirstObject();
129      if (photoAsset != undefined) {
130        console.info('photoAsset.displayName : ' + photoAsset.displayName);
131      }
132    } else {
133      console.error('fetchResult fail' + err);
134    }
135  });
136}
137```
138
139## cl.file.4 fileAccess模块变更
140
1411. 文件访问框架管理的资源范围发生变化,不再支持访问媒体库管理的资源。目前文件访问框架支持以下目录:
142   - 外部存储目录
143   - Docs目录
144   - Download目录
145   - Desktop目录
146   - Documents目录
147   - Share共享盘目录
148
149   fileAccess将不再支持获取缩略图和媒体资源的部分属性查询。
150
1512. uri格式发生变化,开发者无需解析具体格式。
152
153**变更影响**
154
155基于此前版本开发的应用,请排查是否有使用媒体库的接口操作通过fileAccess获取的uri,将会无法达成预期结果。
156
157**关键的接口/组件变更**
158
159删除接口如下
160
161| 类名           | 删除接口声明                                                 |
162| -------------- | ------------------------------------------------------------ |
163| fileAccessHelper | getThumbnail(uri: string, size: image.Size, callback: AsyncCallback<image.PixelMap>): void;|
164
165枚举FileKey删除部分值:
166
167| 枚举类型 | 删除的键值 |
168| -------- | ---- |
169| FileKey | DURATION = 'duration' |
170| FileKey | WIDTH = 'width' |
171| FileKey | HEIGHT = 'height' |
172
173**适配指导**
174
175fileAccess的接口调用无变化,但接口返回的uri可访问的资源发生变化。
176
177如需获取文件名、路径等属性,请使用[fileuri接口](../../../application-dev/reference/apis/js-apis-file-fileuri.md)。
178
179使用文件访问框架的接口获取的uri,推荐使用[fs接口](../../../application-dev/reference/apis/js-apis-file-fs.md)打开。
180
181
182## cl.file.5 补充PhotoAccessHelper模块错误码
183
184@ohos.file.photoAccessHelper.d.ts中补充错误码。错误码详细含义可参考[文件管理子系统错误码](../../../application-dev/reference/errorcodes/errorcode-filemanagement.md)
185
186**变更影响**
187
188本次补充了@ohos.file.photoAccessHelper.d.ts中部分接口可能抛出的错误码。只涉及补充jsdoc,不涉及代码逻辑修改。因此兼容性无影响。
189