js-apis-filemanager.md 10.8 KB
Newer Older
P
panqiangbiao 已提交
1
# 公共文件访问与管理
Z
zhangxingxia 已提交
2
>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
Z
zhangxingxia 已提交
3
>
Z
zhangxingxia 已提交
4
>- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5 6
>- 本模块接口为系统接口,三方应用不支持调用,当前只支持filepicker调用。

Z
zhangxingxia 已提交
7 8
该模块提供公共文件访问和管理的服务接口,向下对接底层文件管理服务,如媒体库、外卡管理;向上对应用程序提供公共文件查询、创建的能力。

P
panqiangbiao 已提交
9 10
## 导入模块

Z
zhangxingxia 已提交
11
```js
Z
zhangxingxia 已提交
12
import filemanager from '@ohos.fileManager';
P
panqiangbiao 已提交
13 14 15
```

## filemanager.getRoot
Z
zhangxingxia 已提交
16

P
panqiangbiao 已提交
17
getRoot(options? : {dev? : DevInfo}) : Promise<FileInfo[]>
P
panqiangbiao 已提交
18 19 20

以异步方法获取第一层相册,目录信息。使用promise形式返回结果。

21 22
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
23 24 25
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
Z
zhangxingxia 已提交
26
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
27 28 29 30 31

- 返回值

  | 类型 | 说明 |
  | --- | -- |
Z
zhangxingxia 已提交
32
  | Promise&lt;[FileInfo](#fileinfo)[]&gt; | 第一层目录相册信息 |
P
panqiangbiao 已提交
33 34 35

- 示例

Z
zhangxingxia 已提交
36 37 38 39
  ```js
  filemanager.getRoot().then((fileInfo) => {
      if(Array.isArray(fileInfo)) {
          for (var i = 0; i < fileInfo.length; i++) {
Z
zhangxingxia 已提交
40
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
41 42 43 44 45 46
          }
      }
  }).catch((err) => {
      console.log(err)
  });
  ```
P
panqiangbiao 已提交
47 48 49

## filemanager.getRoot

P
panqiangbiao 已提交
50
getRoot(options? : {dev? : DevInfo}, callback : AsyncCallback&lt;FileInfo[]&gt;) : void
P
panqiangbiao 已提交
51 52 53

以异步方法获取第一层相册,目录信息。使用callback形式返回结果。

54 55
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
56 57 58 59
- 参数

  | 参数名   | 类型                      | 必填 | 说明                          |
  | -------- | ------------------------- | ---- | ----------------------------- |
Z
zhangxingxia 已提交
60
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
Z
zhangxingxia 已提交
61
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
P
panqiangbiao 已提交
62 63 64

- 示例

Z
zhangxingxia 已提交
65 66 67 68
  ```js
  filemanager.getRoot((err, fileInfo) => {
      if(Array.isArray(fileInfo)) {
          for (var i = 0; i < fileInfo.length; i++) {
Z
zhangxingxia 已提交
69
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
70 71 72 73
          }
      }
  });
  ```
P
panqiangbiao 已提交
74 75 76

## filemanager.listFile

P
panqiangbiao 已提交
77
listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}) : Promise&lt;FileInfo[]&gt;
P
panqiangbiao 已提交
78

Z
zhangxingxia 已提交
79
以异步方法获取第二层相册,文件信息。使用promise形式返回结果。
P
panqiangbiao 已提交
80

81 82
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
83 84 85 86
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | path | string | 是 | 待查询目录uri |
Z
zhangxingxia 已提交
87 88 89
  | type | string | 是 | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>-&nbsp;offset,number类型,待查询文件偏移个数。<br/>-&nbsp;count,number类型,待查询文件个数。 |
  
P
panqiangbiao 已提交
90 91 92 93 94 95 96 97 98 99 100 101 102
- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | Promise&lt;FileInfo[]&gt; | 文件信息 |

- 异常
  | 错误名称 | 错误类型 | 错误码 |说明 |
  | --- | -- | --- | -- |
  | 对应的目录、相册不存在 | No such file or directory | 2      | uri对应的目录、相册不存在 |
  | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 |
  | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 |

Z
zhangxingxia 已提交
103 104 105 106 107 108 109 110 111 112
- 示例

  ```js
  // 获取目录下所有文件
  // 通过listFile、getRoot获取的文件uri
  let media_path = file.uri
  filemanager.listFile(media_path, "file")
  .then((fileInfo) => {
      if(Array.isArray(fileInfo)) {
          for (var i = 0; i < fileInfo.length; i++) {
Z
zhangxingxia 已提交
113
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
114 115 116 117 118 119 120
          }
      }
  }).catch((err) => {
      console.log(err)
  });
  ```

P
panqiangbiao 已提交
121 122
## filemanager.listFile

P
panqiangbiao 已提交
123
listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}, callback : AsyncCallback&lt;FileInfo[]&gt;) : void
P
panqiangbiao 已提交
124

Z
zhangxingxia 已提交
125
以异步方法获取第二层相册,文件信息。使用callback形式返回结果。
P
panqiangbiao 已提交
126

127 128
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
129 130 131 132 133
- 参数

  | 参数名   | 类型                      | 必填 | 说明                                                         |
  | -------- | ------------------------- | ---- | ------------------------------------------------------------ |
  | path     | string                    | 是   | 待查询目录uri                                                |
Z
zhangxingxia 已提交
134 135
  | type     | string                    | 是   | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>-&nbsp;offset,number类型,待查询文件偏移个数。<br/>-&nbsp;count,number类型,待查询文件个数。 |
Z
zhangxingxia 已提交
136
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调                                 |
P
panqiangbiao 已提交
137 138 139 140 141 142 143 144
- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 对应的目录、相册不存在    | No such file or directory | 2      | uri对应的目录、相册不存在 |
  | 获取FMS服务失败           | No such process           | 3      | 获取FMS服务失败           |
  | path对应uri不是相册、目录 | Not a directory           | 20     | path对应uri不是相册、目录 |

Z
zhangxingxia 已提交
145 146 147 148 149 150 151 152
- 示例

  ```js
  // 通过listFile、getRoot获取的文件uri
  let media_path = file.uri
  filemanager.listFile(media_path, "file", (err, fileInfo) => {
      if(Array.isArray(fileInfo)) {
          for (var i = 0; i < fileInfo.length; i++) {
Z
zhangxingxia 已提交
153
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
154 155 156 157
          }
      }
  });
  ```
P
panqiangbiao 已提交
158 159 160

## filemanager.createFile

Z
zhangxingxia 已提交
161
createFile(path : string, filename : string, options? : {dev? : DevInfo})  :   Promise&lt;string&gt;
P
panqiangbiao 已提交
162 163 164

以异步方法创建文件到指定路径,返回文件uri。使用promise形式返回结果。

165 166
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
167 168 169 170 171
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | filename | string | 是 | 待创建的文件名 |
  | path | string | 是 | 待保存目的相册uri |
Z
zhangxingxia 已提交
172
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | string | 文件uri |

- 异常
  | 错误名称 | 错误类型 | 错误码 |说明 |
  | --- | -- | --- | -- |
  | 创建文件不允许 | Operation not permitted | 1 | 已有重名文件 |
  | 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 |
  | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 |
  | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 |

Z
zhangxingxia 已提交
188 189 190 191 192 193
- 示例

  ```js
  // 创建文件,返回文件uri
  let media_path = file.uri // 通过listFile、getRoot获取的文件uri
  let name = "xxx.jpg" // 待保存文件的后缀
Z
zhangxingxia 已提交
194 195 196 197 198
  filemanager.createFile(media_path, name).then((uri) => {
      // 返回uri给应用
      console.log("file uri:"+uri);
  }).catch((err) => {
      console.log(err);
Z
zhangxingxia 已提交
199 200
  });
  ```
P
panqiangbiao 已提交
201 202 203

## filemanager.createFile

P
panqiangbiao 已提交
204
createFile(path : string, filename: string, options? : {dev? : DevInfo}, callback : AsyncCallback&lt;string&gt;) : void
P
panqiangbiao 已提交
205 206 207

以异步方法创建文件到指定路径,返回文件uri。使用callback形式返回结果。

208 209
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
210 211 212 213 214 215
- 参数

  | 参数名   | 类型                      | 必填 | 说明                          |
  | -------- | ------------------------- | ---- | ----------------------------- |
  | filename | string                    | 是   | 待创建的文件名                |
  | path     | string                    | 是   | 待保存目的相册uri             |
Z
zhangxingxia 已提交
216
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
Z
zhangxingxia 已提交
217
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
P
panqiangbiao 已提交
218 219 220 221 222 223 224 225 226 227

- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 创建文件不允许            | Operation not permitted   | 1      | 已有重名文件              |
  | 对应的目录、相册不存在    | No such file or directory | 2      | uri对应的目录、相册不存在 |
  | 获取FMS服务失败           | No such process           | 3      | 获取FMS服务失败           |
  | path对应uri不是相册、目录 | Not a directory           | 20     | path对应uri不是相册、目录 |

Z
zhangxingxia 已提交
228 229 230 231 232 233 234 235 236
- 示例

  ```js
  // 创建文件,返回文件uri
  // 通过listFile、getRoot获取的文件uri
  let media_path = file.uri
  // 待保存文件的后缀
  let name = "xxx.jpg"
  filemanager.createFile(media_path, name, (err, uri) => {
Z
zhangxingxia 已提交
237 238
      // 返回uri给应用
      console.log("file uri:"+uri);
Z
zhangxingxia 已提交
239 240
  });
  ```
P
panqiangbiao 已提交
241 242 243 244

## FileInfo
文件信息类型,通过getRoot, listFile等接口返回的类型。

245 246
**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.FileManagerService。

Z
zhangxingxia 已提交
247 248
### 属性

P
panqiangbiao 已提交
249 250 251 252 253 254 255 256
| 参数名 | 类型 | 可读 | 可写 | 说明 |
| --- | -- | -- | -- | -- |
| name | string | 是 | 否 | 文件名称 |
| path | string | 是 | 否 | 文件Uri |
| type | string | 是 | 否 | 文件类型 |
| size | number | 是 | 否 | 文件大小 |
| addedTime | number | 是 | 否 | 媒体插入时间 |
| modifiedTime | number | 是 | 否 | 媒体修改时间 |
P
panqiangbiao 已提交
257 258

## DevInfo
Z
zhangxingxia 已提交
259

P
panqiangbiao 已提交
260
设备类型,配置接口访问的设备类型。
Z
zengyawen 已提交
261

262 263
**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.FileManagerService。

Z
zhangxingxia 已提交
264 265
### 属性

Z
zhangxingxia 已提交
266 267 268
| 参数名 | 类型   | 可读 | 可写 | 说明     |
| ------ | ------ | ---- | ---- | -------- |
| name   | string | 是   | 是   | 设备名称 |