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

Z
zhangxingxia 已提交
6
```js
P
panqiangbiao 已提交
7 8 9
import filemanager from 'ohos.filemanager'
```

Z
zhangxingxia 已提交
10
## 系统能力
P
panqiangbiao 已提交
11

Z
zhangxingxia 已提交
12
SystemCapability.FileManagement.FileManagerService
P
panqiangbiao 已提交
13 14

## filemanager.getRoot
Z
zhangxingxia 已提交
15

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

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

- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
Z
zhangxingxia 已提交
23
  | dev | [DevInfo](#devinfo) | 否 | 设备名, 不填为默认值dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
24 25 26 27 28

- 返回值

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

- 示例

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

## filemanager.getRoot

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

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

- 参数

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

- 示例

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

## filemanager.listFile

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

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

- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | type | string | 是 | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
  | path | string | 是 | 待查询目录uri |
Z
zhangxingxia 已提交
83
  | dev | [DevInfo](#devinfo) | 是 | 设备名, 不填为默认值dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
84 85
  | offset | number | 否 | 待查询文件偏移 |
  | count | number | 否 | 待查询文件个数 |
Z
zhangxingxia 已提交
86

P
panqiangbiao 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | 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不是相册、目录 |

```js
// 获取目录下所有文件
// 通过listFile、getRoot获取的文件uri
let media_path = file.uri
P
panqiangbiao 已提交
104
filemanager.listFile(media_path, "file")
P
panqiangbiao 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117
.then((fileInfo) => {
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log(JSON.Stringify(fileInfo))
        }
    }
})
.catch((err) => {
    console.log(err)
})
```
## filemanager.listFile

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

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

- 参数

  | 参数名   | 类型                      | 必填 | 说明                                                         |
  | -------- | ------------------------- | ---- | ------------------------------------------------------------ |
  | type     | string                    | 是   | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
  | path     | string                    | 是   | 待查询目录uri                                                |
Z
zhangxingxia 已提交
128
  | dev | [DevInfo](#devinfo) | 否 | 设备名, 不填为默认值dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
129 130
  | offset | number | 否 | 待查询文件偏移 |
  | count | number | 否 | 待查询文件个数 |
Z
zhangxingxia 已提交
131
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调                                 |
P
panqiangbiao 已提交
132 133 134 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不是相册、目录 |

```js
// 通过listFile、getRoot获取的文件uri
let media_path = file.uri
P
panqiangbiao 已提交
143
filemanager.listFile(media_path, "file", (err, fileInfo) => {
P
panqiangbiao 已提交
144 145 146 147 148 149 150 151 152 153
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log(JSON.Stringify(fileInfo))
        }
    }
})
```

## filemanager.createFile

P
panqiangbiao 已提交
154
filemanager.createFile(path : string, filename : string, options? : {dev? : DevInfo})  :   promise&lt;string&gt;
P
panqiangbiao 已提交
155 156 157 158 159 160 161 162

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

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

- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | 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不是相册、目录 |

```js
// 创建文件,返回文件uri
let media_path = file.uri // 通过listFile、getRoot获取的文件uri
let name = "xxx.jpg" // 待保存文件的后缀
P
panqiangbiao 已提交
183
filemanager.createFile(media_path, name)
P
panqiangbiao 已提交
184 185 186 187 188 189 190 191 192 193
.then((uri) => {
// 返回uri给应用
})
.catch((err) => {
    console.log(err)
})
```

## filemanager.createFile

P
panqiangbiao 已提交
194
createFile(path : string, filename: string, options? : {dev? : DevInfo}, callback : AsyncCallback&lt;string&gt;) : void
P
panqiangbiao 已提交
195 196 197 198 199 200 201 202 203

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

- 参数

  | 参数名   | 类型                      | 必填 | 说明                          |
  | -------- | ------------------------- | ---- | ----------------------------- |
  | filename | string                    | 是   | 待创建的文件名                |
  | path     | string                    | 是   | 待保存目的相册uri             |
Z
zhangxingxia 已提交
204 205
  | dev | [DevInfo](#devinfo) | 否 | 设备名, 不填为默认值dev = {name: "local"}, 当前仅支持设备'local' |
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
P
panqiangbiao 已提交
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221

- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 创建文件不允许            | 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不是相册、目录 |

```js
// 创建文件,返回文件uri
// 通过listFile、getRoot获取的文件uri
let media_path = file.uri
// 待保存文件的后缀
let name = "xxx.jpg"
P
panqiangbiao 已提交
222
filemanager.createFile(media_path, name, (err, uri) => {
P
panqiangbiao 已提交
223 224 225 226 227 228 229
// 返回uri给应用
})
```

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

Z
zhangxingxia 已提交
230 231
### 属性

P
panqiangbiao 已提交
232 233 234 235 236 237 238 239
| 参数名 | 类型 | 可读 | 可写 | 说明 |
| --- | -- | -- | -- | -- |
| name | string | 是 | 否 | 文件名称 |
| path | string | 是 | 否 | 文件Uri |
| type | string | 是 | 否 | 文件类型 |
| size | number | 是 | 否 | 文件大小 |
| addedTime | number | 是 | 否 | 媒体插入时间 |
| modifiedTime | number | 是 | 否 | 媒体修改时间 |
P
panqiangbiao 已提交
240 241 242

## DevInfo
设备类型,配置接口访问的设备类型。
Z
zengyawen 已提交
243

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

P
panqiangbiao 已提交
246 247 248
  | 参数名 | 类型 | 可读 | 可写 | 说明 |
  | --- | -- | -- | -- | -- |
  | name | string | 是 | 是 | 设备名称 |