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

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

## filemanager.getRoot
Z
zhangxingxia 已提交
13

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

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

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

P
panqiangbiao 已提交
20 21 22
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
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
Z
zhangxingxia 已提交
34
filemanager.getRoot().then((fileInfo) => {
P
panqiangbiao 已提交
35 36 37 38 39
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log(JSON.Stringify(fileInfo))
        }
    }
Z
zhangxingxia 已提交
40
}).catch((err) => {
P
panqiangbiao 已提交
41
    console.log(err)
Z
zhangxingxia 已提交
42
});
P
panqiangbiao 已提交
43 44 45 46
```

## filemanager.getRoot

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

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

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

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

  | 参数名   | 类型                      | 必填 | 说明                          |
  | -------- | ------------------------- | ---- | ----------------------------- |
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

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

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

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

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

  | 类型 | 说明 |
  | --- | -- |
  | 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 已提交
106
filemanager.listFile(media_path, "file")
P
panqiangbiao 已提交
107 108 109 110 111 112
.then((fileInfo) => {
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log(JSON.Stringify(fileInfo))
        }
    }
Z
zhangxingxia 已提交
113
}).catch((err) => {
P
panqiangbiao 已提交
114 115 116 117 118
    console.log(err)
})
```
## filemanager.listFile

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

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

123 124
**系统能力**:SystemCapability.FileManagement.FileManagerService

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

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

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 对应的目录、相册不存在    | 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 已提交
146
filemanager.listFile(media_path, "file", (err, fileInfo) => {
P
panqiangbiao 已提交
147 148 149 150 151 152 153 154 155 156
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log(JSON.Stringify(fileInfo))
        }
    }
})
```

## filemanager.createFile

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

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

161 162
**系统能力**:SystemCapability.FileManagement.FileManagerService

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

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

## filemanager.createFile

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

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

203 204
**系统能力**:SystemCapability.FileManagement.FileManagerService

P
panqiangbiao 已提交
205 206 207 208 209 210
- 参数

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

- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 创建文件不允许            | 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 已提交
229
filemanager.createFile(media_path, name, (err, uri) => {
P
panqiangbiao 已提交
230 231 232 233 234 235 236
// 返回uri给应用
})
```

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

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

Z
zhangxingxia 已提交
239 240
### 属性

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

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

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

Z
zhangxingxia 已提交
255 256
### 属性

P
panqiangbiao 已提交
257 258 259
  | 参数名 | 类型 | 可读 | 可写 | 说明 |
  | --- | -- | -- | -- | -- |
  | name | string | 是 | 是 | 设备名称 |