js-apis-filemanager.md 11.4 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形式返回结果。

W
wangbo 已提交
21
**系统能力**:SystemCapability.FileManagement.UserFileService
22

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形式返回结果。

W
wangbo 已提交
54
**系统能力**:SystemCapability.FileManagement.UserFileService
55

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
  ```js
W
wangbo 已提交
66 67 68
  let option = {
            "dev":{
            name:"",
W
wangbo 已提交
69 70 71 72
            }
  };
  filemanager.getRoot(option,(err, fileInfo)=>{
      if(Array.isArray(fileInfo)) {
Z
zhangxingxia 已提交
73
          for (var i = 0; i < fileInfo.length; i++) {
Z
zhangxingxia 已提交
74
              console.log("file:"+JSON.stringify(fileInfo));
Z
zhangxingxia 已提交
75
          }
W
wangbo 已提交
76
      } 
W
wangbo 已提交
77
  });
W
wangbo 已提交
78
  
Z
zhangxingxia 已提交
79
  ```
P
panqiangbiao 已提交
80 81 82

## filemanager.listFile

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

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

W
wangbo 已提交
87
**系统能力**:SystemCapability.FileManagement.UserFileService
88

P
panqiangbiao 已提交
89 90 91 92
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | path | string | 是 | 待查询目录uri |
Z
zhangxingxia 已提交
93 94 95
  | 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 已提交
96 97 98 99 100 101 102 103 104 105 106 107 108
- 返回值

  | 类型 | 说明 |
  | --- | -- |
  | 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 已提交
109 110 111 112 113
- 示例

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


    
Z
zhangxingxia 已提交
126 127 128 129
      console.log(err)
  });
  ```

P
panqiangbiao 已提交
130 131
## filemanager.listFile

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

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

W
wangbo 已提交
136
**系统能力**:SystemCapability.FileManagement.UserFileService
137

P
panqiangbiao 已提交
138 139 140 141 142
- 参数

  | 参数名   | 类型                      | 必填 | 说明                                                         |
  | -------- | ------------------------- | ---- | ------------------------------------------------------------ |
  | path     | string                    | 是   | 待查询目录uri                                                |
Z
zhangxingxia 已提交
143 144
  | 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 已提交
145
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调                                 |
P
panqiangbiao 已提交
146 147 148 149 150 151 152 153
- 异常

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

Z
zhangxingxia 已提交
154 155 156
- 示例

  ```js
W
wangbo 已提交
157
  // 通过listFile、getRoot获取的文件path
W
wangbo 已提交
158
  let fileInfos = filemanager.getRoot(); 
W
wangbo 已提交
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
  let media_path  = "";
  for (let i = 0; i < fileInfos.length; i++) {
	if (fileInfos[i].name == "image_album") {
	  media_path = fileInfos[i].path;
	} else if (fileInfos[i].name == "audio_album") {
	  media_path = fileInfos[i].path;
	} else if (fileInfos[i].name == "video_album") {
	  media_path = fileInfos[i].path;
	} else if (fileInfos[i].name == "file_folder") {
	  media_path = fileInfos[i].path;
	}
  }

  filemanager.listFile(media_path, "file")
  .then((fileInfo) => {
    if(Array.isArray(fileInfo)) {
        for (var i = 0; i < fileInfo.length; i++) {
            console.log("file:"+JSON.stringify(fileInfo));
        }
    }
  }).catch((err) => {
    console.log(err)
Z
zhangxingxia 已提交
181 182
  });
  ```
P
panqiangbiao 已提交
183 184 185

## filemanager.createFile

Z
zhangxingxia 已提交
186
createFile(path : string, filename : string, options? : {dev? : DevInfo})  :   Promise&lt;string&gt;
P
panqiangbiao 已提交
187 188 189

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

W
wangbo 已提交
190
**系统能力**:SystemCapability.FileManagement.UserFileService
191

P
panqiangbiao 已提交
192 193 194 195 196
- 参数
  | 参数名 | 类型 | 必填 | 说明 |
  | --- | --- | --- | -- |
  | filename | string | 是 | 待创建的文件名 |
  | path | string | 是 | 待保存目的相册uri |
Z
zhangxingxia 已提交
197
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
P
panqiangbiao 已提交
198 199 200 201 202

- 返回值

  | 类型 | 说明 |
  | --- | -- |
W
wangbo 已提交
203
  | string | 文件uri |
P
panqiangbiao 已提交
204 205 206 207 208 209 210 211 212

- 异常
  | 错误名称 | 错误类型 | 错误码 |说明 |
  | --- | -- | --- | -- |
  | 创建文件不允许 | 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 已提交
213 214 215 216
- 示例

  ```js
  // 创建文件,返回文件uri
W
wangbo 已提交
217
  let media_path = "" // 通过listFile、getRoot获取的文件uri
Z
zhangxingxia 已提交
218
  let name = "xxx.jpg" // 待保存文件的后缀
Z
zhangxingxia 已提交
219 220 221 222 223
  filemanager.createFile(media_path, name).then((uri) => {
      // 返回uri给应用
      console.log("file uri:"+uri);
  }).catch((err) => {
      console.log(err);
Z
zhangxingxia 已提交
224 225
  });
  ```
P
panqiangbiao 已提交
226 227 228

## filemanager.createFile

P
panqiangbiao 已提交
229
createFile(path : string, filename: string, options? : {dev? : DevInfo}, callback : AsyncCallback&lt;string&gt;) : void
P
panqiangbiao 已提交
230 231 232

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

W
wangbo 已提交
233
**系统能力**:SystemCapability.FileManagement.UserFileService
234

P
panqiangbiao 已提交
235 236 237 238 239 240
- 参数

  | 参数名   | 类型                      | 必填 | 说明                          |
  | -------- | ------------------------- | ---- | ----------------------------- |
  | filename | string                    | 是   | 待创建的文件名                |
  | path     | string                    | 是   | 待保存目的相册uri             |
Z
zhangxingxia 已提交
241
  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
Z
zhangxingxia 已提交
242
  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
P
panqiangbiao 已提交
243 244 245 246 247 248 249 250 251 252

- 异常

  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
  | ------------------------- | ------------------------- | ------ | ------------------------- |
  | 创建文件不允许            | 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 已提交
253 254 255 256 257
- 示例

  ```js
  // 创建文件,返回文件uri
  // 通过listFile、getRoot获取的文件uri
W
wangbo 已提交
258
  let media_path = ""
Z
zhangxingxia 已提交
259 260
  // 待保存文件的后缀
  let name = "xxx.jpg"
W
wangbo 已提交
261 262
  let dev = "";
  filemanager.createFile(media_path, name,  { DevInfo: dev }, function(err, uri) {
Z
zhangxingxia 已提交
263
      // 返回uri给应用
W
wangbo 已提交
264 265 266
    console.log("file uri:"+uri);
    });

Z
zhangxingxia 已提交
267
  ```
P
panqiangbiao 已提交
268 269 270 271

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

W
wangbo 已提交
272
**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService。
273

Z
zhangxingxia 已提交
274 275
### 属性

P
panqiangbiao 已提交
276 277 278 279 280 281 282 283
| 参数名 | 类型 | 可读 | 可写 | 说明 |
| --- | -- | -- | -- | -- |
| name | string | 是 | 否 | 文件名称 |
| path | string | 是 | 否 | 文件Uri |
| type | string | 是 | 否 | 文件类型 |
| size | number | 是 | 否 | 文件大小 |
| addedTime | number | 是 | 否 | 媒体插入时间 |
| modifiedTime | number | 是 | 否 | 媒体修改时间 |
P
panqiangbiao 已提交
284 285

## DevInfo
Z
zhangxingxia 已提交
286

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

W
wangbo 已提交
289
**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService。
290

Z
zhangxingxia 已提交
291 292
### 属性

Z
zhangxingxia 已提交
293 294 295
| 参数名 | 类型   | 可读 | 可写 | 说明     |
| ------ | ------ | ---- | ---- | -------- |
| name   | string | 是   | 是   | 设备名称 |