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