1# 文件子系统ChangeLog
2
3## cl.file.1 userFileManager FileAsset属性变更
4
5[userFileManager.FileAsset](../../../application-dev/reference/apis/js-apis-userFileManager.md#fileasset)属性变更。
6
7变更前uri的格式为:
8
9'file://media/\<file_type\>/\<file_id\>/?networkid=xxx'
10
11变更后uri的格式为:
12
13'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg'
14
15**变更影响**
16
17基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。
18
19**关键接口/组件变更**
20
21| 模块名                    | 方法/属性/枚举/常量                                          | 变更类型 |
22| ------------------------- | ------------------------------------------------------------ | -------- |
23| userFileManager   |   **interface** FileAsset | 属性变更     |
24
25**适配指导**
26
27在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。
28
29**正确示例:**
30
31```js
32import userFileManager from '@ohos.filemanagement.userFileManager';
33import dataSharePredicates from '@ohos.data.dataSharePredicates';
34
35async function example() {
36  let context = getContext(this);
37  let mgr = userFileManager.getUserFileMgr(context);
38  let predicates = new dataSharePredicates.DataSharePredicates();
39  let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。
40  predicates.equalTo('uri', uri);
41  let fetchOptions = {
42    fetchColumns: ['uri'],
43    predicates: predicates
44  };
45
46  mgr.getPhotoAssets(fetchOptions, async (err, fetchResult) => {
47    if (fetchResult != undefined) {
48      console.info('fetchResult success');
49      let fileAsset = await fetchResult.getFirstObject();
50      if (fileAsset != undefined) {
51        console.info('fileAsset.displayName : ' + fileAsset.displayName);
52      }
53    } else {
54      console.error('fetchResult fail' + err);
55    }
56  });
57}
58```
59
60## cl.file.2 photoAccessHelper PhotoAsset属性变更
61
62[photoAccessHelper.PhotoAsset](../../../application-dev/reference/apis/js-apis-photoAccessHelper.md#photoasset)属性变更。
63
64变更前uri的格式为:
65
66'file://media/\<file_type\>/\<file_id\>/?networkid=xxx'
67
68变更后uri的格式为:
69
70'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg'
71
72**变更影响**
73
74基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。
75
76**关键接口/组件变更**
77
78| 模块名                    | 方法/属性/枚举/常量                                          | 变更类型 |
79| ------------------------- | ------------------------------------------------------------ | -------- |
80| photoAccessHelper   |   **interface** PhotoAsset | 属性变更     |
81
82**适配指导**
83
84在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。
85
86**正确示例:**
87
88```js
89import photoAccessHelper from '@ohos.file.photoAccessHelper';
90import dataSharePredicates from '@ohos.data.dataSharePredicates';
91
92async function example() {
93  let context = getContext(this);
94  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
95  let predicates = new dataSharePredicates.DataSharePredicates();
96  let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。
97  predicates.equalTo('uri', uri);
98  let fetchOptions = {
99    fetchColumns: ['uri'],
100    predicates: predicates
101  };
102
103  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
104    if (fetchResult != undefined) {
105      console.info('fetchResult success');
106      let photoAsset = await fetchResult.getFirstObject();
107      if (photoAsset != undefined) {
108        console.info('photoAsset.displayName : ' + photoAsset.displayName);
109      }
110    } else {
111      console.error('fetchResult fail' + err);
112    }
113  });
114}
115```
116