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

P
panqiangbiao 已提交
7 8
## 导入模块

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

## filemanager.getRoot
Z
zhangxingxia 已提交
14

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

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

19 20
**系统能力**:SystemCapability.FileManagement.FileManagerService

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

- 返回值

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

- 示例

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

## filemanager.getRoot

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

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

52 53
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
54 55 56 57
- 参数

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

- 示例

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

## filemanager.listFile

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

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

79 80
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
81 82 83 84
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | path | string | 是 | 待查询目录uri |
Z
zhangxingxia 已提交
85 86 87
  | 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 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100
- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | 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 已提交
101 102 103 104 105 106 107 108 109 110
- 示例

  ```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 已提交
111
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
112 113 114 115 116 117 118
          }
      }
  }).catch((err) => {
      console.log(err)
  });
  ```

P
panqiangbiao 已提交
119 120
## filemanager.listFile

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

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

125 126
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
127 128 129 130 131
- 参数

  | 参数名   | 类型                      | 必填 | 说明                                                         |
  | -------- | ------------------------- | ---- | ------------------------------------------------------------ |
  | path     | string                    | 是   | 待查询目录uri                                                |
Z
zhangxingxia 已提交
132 133
  | 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 已提交
134
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调                                 |
P
panqiangbiao 已提交
135 136 137 138 139 140 141 142
- 异常

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

Z
zhangxingxia 已提交
143 144 145 146 147 148 149 150
- 示例

  ```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 已提交
151
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
152 153 154 155
          }
      }
  });
  ```
P
panqiangbiao 已提交
156 157 158

## filemanager.createFile

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

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

163 164
**系统能力**:SystemCapability.FileManagement.FileManagerService

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

- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | 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 已提交
186 187 188 189 190 191
- 示例

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

## filemanager.createFile

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

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

206 207
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
208 209 210 211 212 213
- 参数

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

- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 创建文件不允许            | 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 已提交
226 227 228 229 230 231 232 233 234
- 示例

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

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

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

Z
zhangxingxia 已提交
245 246
### 属性

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

## DevInfo
Z
zhangxingxia 已提交
257

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

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

Z
zhangxingxia 已提交
262 263
### 属性

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