• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 公共文件访问与管理
2
3该模块提供公共文件访问和管理的服务接口,向下对接底层文件管理服务,如媒体库、外卡管理;向上对应用程序提供公共文件查询、创建的能力。
4
5>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
6>
7>- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>- 本模块接口为系统接口,三方应用不支持调用,当前只支持filepicker调用。
9
10## 导入模块
11
12```js
13import filemanager from '@ohos.fileManager';
14```
15
16## filemanager.getRoot
17
18getRoot(options? : {dev? : DevInfo}) : Promise<FileInfo[]>
19
20以异步方法获取第一层相册,目录信息。使用promise形式返回结果。
21
22**系统能力**:SystemCapability.FileManagement.UserFileService
23
24**参数:**
25  | 参数名 | 类型 | 必填 | 说明 |
26  | --- | --- | --- | -- |
27  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
28
29**返回值:**
30
31  | 类型 | 说明 |
32  | --- | -- |
33  | Promise&lt;[FileInfo](#fileinfo)[]&gt; | 第一层目录相册信息 |
34
35**示例:**
36
37  ```js
38  filemanager.getRoot().then((fileInfos) => {
39    for (var i = 0; i < fileInfos.length; i++) {
40        console.log("files:"+JSON.stringify(fileInfos));
41    }
42  }).catch((err) => {
43      console.log(err)
44  });
45  ```
46
47## filemanager.getRoot
48
49getRoot(options? : {dev? : DevInfo}, callback : AsyncCallback&lt;FileInfo[]&gt;) : void
50
51以异步方法获取第一层相册,目录信息。使用callback形式返回结果。
52
53**系统能力**:SystemCapability.FileManagement.UserFileService
54
55**参数:**
56
57  | 参数名   | 类型                      | 必填 | 说明                          |
58  | -------- | ------------------------- | ---- | ----------------------------- |
59  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
60  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
61
62**示例:**
63
64  ```js
65  let options = {
66    "dev":{
67      "name":"local"
68    }
69  };
70  filemanager.getRoot(options, (err, fileInfos)=>{
71    for (var i = 0; i < fileInfos.length; i++) {
72        console.log("files:"+JSON.stringify(fileInfos));
73    }
74  });
75  ```
76
77## filemanager.listFile
78
79listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}) : Promise&lt;FileInfo[]&gt;
80
81以异步方法获取第二层相册,文件信息。使用promise形式返回结果。
82
83**系统能力**:SystemCapability.FileManagement.UserFileService
84
85**参数:**
86  | 参数名 | 类型 | 必填 | 说明 |
87  | --- | --- | --- | -- |
88  | path | string | 是 | 待查询目录uri |
89  | type | string | 是 | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
90  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>-&nbsp;offset,number类型,待查询文件偏移个数。<br/>-&nbsp;count,number类型,待查询文件个数。 |
91
92**返回值:**
93
94  | 类型 | 说明 |
95  | --- | -- |
96  | Promise&lt;FileInfo[]&gt; | 文件信息 |
97
98**异常:**
99
100  | 错误名称 | 错误类型 | 错误码 |说明 |
101  | --- | -- | --- | -- |
102  | 对应的目录、相册不存在 | No such file or directory | 2      | uri对应的目录、相册不存在 |
103  | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 |
104  | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 |
105
106**示例:**
107
108  ```js
109  // 获取目录下所有文件,通过getRoot获取的目录uri
110  filemanager.getRoot().then((fileInfos) => {
111    let file = fileInfos.find(item => item.name == "file_folder");
112    let path = file.path;
113    filemanager.listFile(path, "file").then((files) => {
114        console.log("files:" + JSON.stringify(files));
115      }).catch((err) => {
116        console.log("failed to get files" + err);
117      });
118  }).catch((err) => {
119      console.log("failed to get root" + err);
120  });
121  ```
122
123## filemanager.listFile
124
125listFile(path : string, type : string, options? : {dev? : DevInfo, offset? : number, count? : number}, callback : AsyncCallback&lt;FileInfo[]&gt;) : void
126
127以异步方法获取第二层相册,文件信息。使用callback形式返回结果。
128
129**系统能力**:SystemCapability.FileManagement.UserFileService
130
131**参数:**
132
133| 参数名   | 类型                      | 必填 | 说明                                                         |
134| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
135| path     | string                    | 是   | 待查询目录uri                                                |
136| type     | string                    | 是   | 待查询文件类型, 支持以下类型 "file", "image", "audio", "video" |
137| options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local'。<br/>-&nbsp;offset,number类型,待查询文件偏移个数。<br/>-&nbsp;count,number类型,待查询文件个数。 |
138| callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调                                 |
139
140**异常:**
141
142| 错误名称                  | 错误类型                  | 错误码 | 说明                      |
143| ------------------------- | ------------------------- | ------ | ------------------------- |
144| 对应的目录、相册不存在    | No such file or directory | 2      | uri对应的目录、相册不存在 |
145| 获取FMS服务失败           | No such process           | 3      | 获取FMS服务失败           |
146| path对应uri不是相册、目录 | Not a directory           | 20     | path对应uri不是相册、目录 |
147
148**示例:**
149
150```js
151// 获取目录下所有文件,通过getRoot获取的目录uri
152filemanager.getRoot().then((fileInfos) => {
153  let file = fileInfos.find(item => item.name == "image_album");
154  let path = file.path;
155  filemanager.listFile(path, "image",function(err, files){
156    console.log("files:" + JSON.stringify(files));
157  })
158}).catch((err) => {
159    console.log("failed to get root" + err);
160});
161```
162
163## filemanager.createFile
164
165createFile(path : string, filename : string, options? : {dev? : DevInfo})  :   Promise&lt;string&gt;
166
167以异步方法创建文件到指定路径,返回文件uri。使用promise形式返回结果。
168
169**系统能力**:SystemCapability.FileManagement.UserFileService
170
171**参数:**
172  | 参数名 | 类型 | 必填 | 说明 |
173  | --- | --- | --- | -- |
174  | filename | string | 是 | 待创建的文件名 |
175  | path | string | 是 | 待保存目的相册uri |
176  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
177
178**返回值:**
179
180| 类型 | 说明 |
181| --- | -- |
182| Promise&lt;string&gt; | 文件uri |
183
184**异常:**
185
186  | 错误名称 | 错误类型 | 错误码 |说明 |
187  | --- | -- | --- | -- |
188  | 创建文件不允许 | Operation not permitted | 1 | 已有重名文件 |
189  | 对应的目录、相册不存在 | No such file or directory | 2 | uri对应的目录、相册不存在 |
190  | 获取FMS服务失败 | No such process | 3 | 获取FMS服务失败 |
191  | path对应uri不是相册、目录 | Not a directory | 20 | path对应uri不是相册、目录 |
192
193**示例:**
194
195  ```js
196  // 创建文件,返回文件uri
197  let media_path = "" // 通过listFile、getRoot获取的文件uri
198  let name = "xxx.jpg" // 待保存文件的后缀
199  filemanager.createFile(media_path, name).then((uri) => {
200      // 返回uri给应用
201      console.log("file uri:"+uri);
202  }).catch((err) => {
203      console.log(err);
204  });
205  ```
206
207## filemanager.createFile
208
209createFile(path : string, filename: string, options? : {dev? : DevInfo}, callback : AsyncCallback&lt;string&gt;) : void
210
211以异步方法创建文件到指定路径,返回文件uri。使用callback形式返回结果。
212
213**系统能力**:SystemCapability.FileManagement.UserFileService
214
215**参数:**
216
217  | 参数名   | 类型                      | 必填 | 说明                          |
218  | -------- | ------------------------- | ---- | ----------------------------- |
219  | filename | string                    | 是   | 待创建的文件名                |
220  | path     | string                    | 是   | 待保存目的相册uri             |
221  | options | Object | 否 | 支持如下选项:<br/>-&nbsp;dev,[DevInfo](#devinfo)类型,不填默认dev = {name: "local"}, 当前仅支持设备'local' |
222  | callback | AsyncCallback&lt;[FileInfo](#fileinfo)[]&gt; | 是   | 异步获取文件的信息之后的回调  |
223
224**异常:**
225
226  | 错误名称                  | 错误类型                  | 错误码 | 说明                      |
227  | ------------------------- | ------------------------- | ------ | ------------------------- |
228  | 创建文件不允许            | Operation not permitted   | 1      | 已有重名文件              |
229  | 对应的目录、相册不存在    | No such file or directory | 2      | uri对应的目录、相册不存在 |
230  | 获取FMS服务失败           | No such process           | 3      | 获取FMS服务失败           |
231  | path对应uri不是相册、目录 | Not a directory           | 20     | path对应uri不是相册、目录 |
232
233**示例:**
234
235  ```js
236  // 创建文件,返回文件uri
237  // 通过listFile、getRoot获取的文件uri
238  let media_path = ""
239  // 待保存文件的后缀
240  let name = "xxx.jpg"
241  let options = {
242    "dev":{
243      "name":"local"
244    }
245  };
246  filemanager.createFile(media_path, name, options, function(err, uri) {
247    // 返回uri给应用
248    console.log("file uri:"+uri);
249  });
250
251  ```
252
253## FileInfo
254文件信息类型,通过getRoot, listFile等接口返回的类型。
255
256**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService257
258### 属性
259
260| 参数名 | 类型 | 可读 | 可写 | 说明 |
261| --- | -- | -- | -- | -- |
262| name | string | 是 | 否 | 文件名称 |
263| path | string | 是 | 否 | 文件Uri |
264| type | string | 是 | 否 | 文件类型 |
265| size | number | 是 | 否 | 文件大小 |
266| addedTime | number | 是 | 否 | 媒体插入时间 |
267| modifiedTime | number | 是 | 否 | 媒体修改时间 |
268
269## DevInfo
270
271设备类型,配置接口访问的设备类型。
272
273**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileService274
275### 属性
276
277| 参数名 | 类型   | 可读 | 可写 | 说明     |
278| ------ | ------ | ---- | ---- | -------- |
279| name   | string | 是   | 是   | 设备名称 |