1# 公共文件访问与管理 2 3该模块提供公共文件访问和管理的服务接口,向下对接底层文件管理服务,如媒体库、外卡管理;向上对应用程序提供公共文件查询、创建的能力。 4 5>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 6> 7>- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8>- 本模块接口为系统接口,三方应用不支持调用,当前只支持filepicker调用。 9 10## 导入模块 11 12```js 13import filemanager from '@ohos.fileManager'; 14``` 15 16## filemanager.getRoot 17 18getRoot(options? : {dev? : DevInfo}) : Promise<FileInfo[]> 19 20以异步方法获取第一层相册,目录信息。使用promise形式返回结果。 21 22**系统能力**:SystemCapability.FileManagement.UserFileService 23 24**参数:** 25 | 参数名 | 类型 | 必填 | 说明 | 26 | --- | --- | --- | -- | 27 | options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' | 28 29**返回值:** 30 31 | 类型 | 说明 | 32 | --- | -- | 33 | Promise<[FileInfo](#fileinfo)[]> | 第一层目录相册信息 | 34 35**示例:** 36 37 ```js 38 filemanager.getRoot().then((fileInfos) => { 39 for (var i = 0; i < fileInfos.length; i++) { 40 console.log("files:"+JSON.stringify(fileInfos)); 41 } 42 }).catch((err) => { 43 console.log(err) 44 }); 45 ``` 46 47## filemanager.getRoot 48 49getRoot(options? : {dev? : DevInfo}, callback : AsyncCallback<FileInfo[]>) : void 50 51以异步方法获取第一层相册,目录信息。使用callback形式返回结果。 52 53**系统能力**:SystemCapability.FileManagement.UserFileService 54 55**参数:** 56 57 | 参数名 | 类型 | 必填 | 说明 | 58 | -------- | ------------------------- | ---- | ----------------------------- | 59 | options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' | 60 | callback | AsyncCallback<[FileInfo](#fileinfo)[]> | 是 | 异步获取文件的信息之后的回调 | 61 62**示例:** 63 64 ```js 65 let options = { 66 "dev":{ 67 "name":"local" 68 } 69 }; 70 filemanager.getRoot(options, (err, fileInfos)=>{ 71 for (var i = 0; i < fileInfos.length; i++) { 72 console.log("files:"+JSON.stringify(fileInfos)); 73 } 74 }); 75 ``` 76 77## filemanager.listFile 78 79listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}) : Promise<FileInfo[]> 80 81以异步方法获取第二层相册,文件信息。使用promise形式返回结果。 82 83**系统能力**:SystemCapability.FileManagement.UserFileService 84 85**参数:** 86 | 参数名 | 类型 | 必填 | 说明 | 87 | --- | --- | --- | -- | 88 | path | string | 是 | 待查询目录uri | 89 | type | string | 是 | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" | 90 | options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>- offset,number类型,待查询文件偏移个数。<br/>- count,number类型,待查询文件个数。 | 91 92**返回值:** 93 94 | 类型 | 说明 | 95 | --- | -- | 96 | Promise<FileInfo[]> | 文件信息 | 97 98**异常:** 99 100 | 错误名称 | 错误类型 | 错误码 |说明 | 101 | --- | -- | --- | -- | 102 | 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 | 103 | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 | 104 | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 | 105 106**示例:** 107 108 ```js 109 // 获取目录下所有文件,通过getRoot获取的目录uri 110 filemanager.getRoot().then((fileInfos) => { 111 let file = fileInfos.find(item => item.name == "file_folder"); 112 let path = file.path; 113 filemanager.listFile(path, "file").then((files) => { 114 console.log("files:" + JSON.stringify(files)); 115 }).catch((err) => { 116 console.log("failed to get files" + err); 117 }); 118 }).catch((err) => { 119 console.log("failed to get root" + err); 120 }); 121 ``` 122 123## filemanager.listFile 124 125listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}, callback : AsyncCallback<FileInfo[]>) : void 126 127以异步方法获取第二层相册,文件信息。使用callback形式返回结果。 128 129**系统能力**:SystemCapability.FileManagement.UserFileService 130 131**参数:** 132 133| 参数名 | 类型 | 必填 | 说明 | 134| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 135| path | string | 是 | 待查询目录uri | 136| type | string | 是 | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" | 137| options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>- offset,number类型,待查询文件偏移个数。<br/>- count,number类型,待查询文件个数。 | 138| callback | AsyncCallback<[FileInfo](#fileinfo)[]> | 是 | 异步获取文件的信息之后的回调 | 139 140**异常:** 141 142| 错误名称 | 错误类型 | 错误码 | 说明 | 143| ------------------------- | ------------------------- | ------ | ------------------------- | 144| 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 | 145| 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 | 146| path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 | 147 148**示例:** 149 150```js 151// 获取目录下所有文件,通过getRoot获取的目录uri 152filemanager.getRoot().then((fileInfos) => { 153 let file = fileInfos.find(item => item.name == "image_album"); 154 let path = file.path; 155 filemanager.listFile(path, "image",function(err, files){ 156 console.log("files:" + JSON.stringify(files)); 157 }) 158}).catch((err) => { 159 console.log("failed to get root" + err); 160}); 161``` 162 163## filemanager.createFile 164 165createFile(path : string, filename : string, options? : {dev? : DevInfo}) : Promise<string> 166 167以异步方法创建文件到指定路径,返回文件uri。使用promise形式返回结果。 168 169**系统能力**:SystemCapability.FileManagement.UserFileService 170 171**参数:** 172 | 参数名 | 类型 | 必填 | 说明 | 173 | --- | --- | --- | -- | 174 | filename | string | 是 | 待创建的文件名 | 175 | path | string | 是 | 待保存目的相册uri | 176 | options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' | 177 178**返回值:** 179 180| 类型 | 说明 | 181| --- | -- | 182| Promise<string> | 文件uri | 183 184**异常:** 185 186 | 错误名称 | 错误类型 | 错误码 |说明 | 187 | --- | -- | --- | -- | 188 | 创建文件不允许 | Operation not permitted | 1 | 已有重名文件 | 189 | 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 | 190 | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 | 191 | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 | 192 193**示例:** 194 195 ```js 196 // 创建文件,返回文件uri 197 let media_path = "" // 通过listFile、getRoot获取的文件uri 198 let name = "xxx.jpg" // 待保存文件的后缀 199 filemanager.createFile(media_path, name).then((uri) => { 200 // 返回uri给应用 201 console.log("file uri:"+uri); 202 }).catch((err) => { 203 console.log(err); 204 }); 205 ``` 206 207## filemanager.createFile 208 209createFile(path : string, filename: string, options? : {dev? : DevInfo}, callback : AsyncCallback<string>) : void 210 211以异步方法创建文件到指定路径,返回文件uri。使用callback形式返回结果。 212 213**系统能力**:SystemCapability.FileManagement.UserFileService 214 215**参数:** 216 217 | 参数名 | 类型 | 必填 | 说明 | 218 | -------- | ------------------------- | ---- | ----------------------------- | 219 | filename | string | 是 | 待创建的文件名 | 220 | path | string | 是 | 待保存目的相册uri | 221 | options | Object | 否 | 支持如下选项:<br/>- dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' | 222 | callback | AsyncCallback<[FileInfo](#fileinfo)[]> | 是 | 异步获取文件的信息之后的回调 | 223 224**异常:** 225 226 | 错误名称 | 错误类型 | 错误码 | 说明 | 227 | ------------------------- | ------------------------- | ------ | ------------------------- | 228 | 创建文件不允许 | Operation not permitted | 1 | 已有重名文件 | 229 | 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 | 230 | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 | 231 | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 | 232 233**示例:** 234 235 ```js 236 // 创建文件,返回文件uri 237 // 通过listFile、getRoot获取的文件uri 238 let media_path = "" 239 // 待保存文件的后缀 240 let name = "xxx.jpg" 241 let options = { 242 "dev":{ 243 "name":"local" 244 } 245 }; 246 filemanager.createFile(media_path, name, options, function(err, uri) { 247 // 返回uri给应用 248 console.log("file uri:"+uri); 249 }); 250 251 ``` 252 253## FileInfo 254文件信息类型,通过getRoot, listFile等接口返回的类型。 255 256**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService。 257 258### 属性 259 260| 参数名 | 类型 | 可读 | 可写 | 说明 | 261| --- | -- | -- | -- | -- | 262| name | string | 是 | 否 | 文件名称 | 263| path | string | 是 | 否 | 文件Uri | 264| type | string | 是 | 否 | 文件类型 | 265| size | number | 是 | 否 | 文件大小 | 266| addedTime | number | 是 | 否 | 媒体插入时间 | 267| modifiedTime | number | 是 | 否 | 媒体修改时间 | 268 269## DevInfo 270 271设备类型,配置接口访问的设备类型。 272 273**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService。 274 275### 属性 276 277| 参数名 | 类型 | 可读 | 可写 | 说明 | 278| ------ | ------ | ---- | ---- | -------- | 279| name | string | 是 | 是 | 设备名称 |