• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.file.fileuri (文件URI)
2
3该模块提供通过PATH获取文件统一资源标志符(Uniform Resource Identifier,URI),后续可通过使用[@ohos.file.fs](js-apis-file-fs.md)进行相关open、read、write等操作,实现文件分享。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { fileUri } from '@kit.CoreFileKit';
13```
14
15使用该功能模块前,需要先获取其应用沙箱路径,开发示例如下:
16
17  ```ts
18  import { UIAbility } from '@kit.AbilityKit';
19  import { window } from '@kit.ArkUI';
20
21  export default class EntryAbility extends UIAbility {
22    onWindowStageCreate(windowStage: window.WindowStage) {
23      let context = this.context;
24      let pathDir = context.filesDir;
25    }
26  }
27  ```
28
29## FileUri<sup>10+</sup>
30
31### 属性
32
33**系统能力**:SystemCapability.FileManagement.AppFileService
34
35| 名称 | 类型 | 必填 | 说明|
36| -------- | --------| -------- |----------------|
37| path<sup>10+</sup> | string | 是 | 将uri转换成对应的沙箱路径path。 1、uri转path过程中会将uri中存在的ASCII码进行解码后拼接在原处,非系统接口生成的uri中可能存在ASCII码解析范围之外的字符,导致字符串无法正常拼接;2、转换处理为系统约定的字符串替换规则(规则随系统演进可能会发生变化),转换过程中不进行路径校验操作,无法保证转换结果的一定可以访问。 |
38| name<sup>10+</sup> | string | 是 | 通过传入的uri获取到对应的文件名称。(如果文件名中存在ASCII码将会被解码处理后拼接在原处)<br>**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。|
39
40### constructor<sup>10+</sup>
41
42constructor(uriOrPath: string)
43
44constructor是FileUri的构造函数。
45
46**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。
47
48**系统能力**:SystemCapability.FileManagement.AppFileService
49
50**参数:**
51
52| 参数名 | 类型 | 必填 | 说明|
53| -------- | -------- | -------- |--------|
54| uriOrPath | string | 是 | uri或路径。uri类型:<br/>-&nbsp; 应用沙箱uri:file://\<bundleName>/\<sandboxPath> <br/>-&nbsp; 公共目录文件类uri:file://docs/storage/Users/currentUser/\<publicPath> <br/>-&nbsp; 公共目录媒体类uri:file://media/\<mediaType>/IMG_DATATIME_ID/\<displayName> |
55
56**错误码:**
57
58以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
59| 错误码ID| 错误信息        |
60| -------- | ---------- |
61| 13900005 | I/O error |
62| 13900042 | Unknown error |
63| 13900020 | Invalid argument |
64| 14300002 | Invalid uri |
65
66**示例:**
67
68  ```ts
69  let path = pathDir + '/test';
70  let uri = fileUri.getUriFromPath(path);  // file://<packageName>/data/storage/el2/base/haps/entry/files/test
71  let fileUriObject = new fileUri.FileUri(uri);
72  console.info("The name of FileUri is " + fileUriObject.name);
73  ```
74
75### toString<sup>10+</sup>
76
77toString(): string
78
79**系统能力**:SystemCapability.FileManagement.AppFileService
80
81返回字符串类型URI。
82
83**返回值:**
84
85| 类型 | 说明 |
86| -------- | -------- |
87| string | 返回字符串类型URI。 |
88
89**示例:**
90
91  ```ts
92  let path = pathDir + '/test';
93  let fileUriObject = new fileUri.FileUri(path);
94  console.info("The uri of FileUri is " + fileUriObject.toString());
95  ```
96
97### getFullDirectoryUri<sup>11+</sup>
98
99getFullDirectoryUri(): string
100
101获取所在路径uri。uri指向文件则返回所在路径的uri,uri指向目录则不处理直接返回原串;uri指向的文件不存在或属性获取失败则返回空串。
102
103如果当前FileUri指向文件,将返回文件所在路径uri。如`xxx/example.txt`,将返回`xxx`。
104
105如果当前FileUri指向目录,将返回当前路径的uri。
106
107**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。
108
109**系统能力**:SystemCapability.FileManagement.AppFileService
110
111**返回值:**
112
113| 类型| 说明|
114| --------- |--------|
115| string | 获取所在路径URI,文件获取所在路径URI,目录获取当前路径URI。 |
116
117**错误码:**
118
119以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
120
121| 错误码ID| 错误信息|
122| -------- |--------|
123| 13900002 | No such file or directory |
124| 13900012 | Permission denied         |
125| 13900042 | Unknown error             |
126
127**示例:**
128
129  ```ts
130  import { BusinessError } from '@kit.BasicServicesKit';
131  try {
132    let path = pathDir + '/test.txt';
133    let fileUriObject = new fileUri.FileUri(path);
134    let directoryUri = fileUriObject.getFullDirectoryUri();
135    console.log(`success to getFullDirectoryUri: ${JSON.stringify(directoryUri)}`);
136  } catch (error) {
137    console.error(`failed to getFullDirectoryUri because: ${JSON.stringify(error)}`);
138  }
139  ```
140
141### isRemoteUri<sup>12+</sup>
142
143isRemoteUri(): boolean
144
145判断当前uri是否是远端uri。
146
147**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。
148
149**系统能力**:SystemCapability.FileManagement.AppFileService
150
151**返回值:**
152
153| 类型| 说明|
154| -------- |---------|
155| boolean | - 返回true,表示当前FileUri指向远端文件或目录,如`xxx/example.txt?networkid=xxx`。<br>- 返回false,表示当前FileUri指向本地的文件或目录。 |
156
157**错误码:**
158
159以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
160
161| 错误码ID| 错误信息|
162| --------- |--------|
163| 13900042 | Unknown error|
164
165**示例:**
166
167  ```ts
168  import { BusinessError } from '@kit.BasicServicesKit';
169  function isRemoteUriExample() {
170    let uri = "file://com.example.demo/data/stroage/el2/base/test.txt?networkid=xxxx";//?networkid设备id,远端URI的标识
171    let fileUriObject = new fileUri.FileUri(uri);
172    let ret = fileUriObject.isRemoteUri();
173    if (ret) {
174        console.log(`It is a remote uri.`);
175    }
176  }
177  ```
178
179## fileUri.getUriFromPath
180
181getUriFromPath(path: string): string
182
183通过传入的路径path生成应用自己的uri;将path转uri时,路径中的中文及非数字字母的特殊字符将会被编译成对应的ASCII码,拼接在uri中。
184
185**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。
186
187**系统能力**:SystemCapability.FileManagement.AppFileService
188
189**参数:**
190
191| 参数名 | 类型   | 必填 | 说明|
192| ------ | ------ | ---- | ------- |
193| path   | string | 是   | 文件的沙箱路径。 |
194
195**返回值:**
196
197  | 类型 | 说明|
198  | ------- |------|
199  | string | 通过传入的路径path生成应用自己的uri;将path转uri时,路径中的中文及非数字字母的特殊字符将会被编译成对应的ASCII码,拼接在uri中。 |
200
201**错误码:**
202
203以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
204| 错误码ID| 错误信息        |
205| ---------- | ---------- |
206| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types |
207
208**示例:**
209
210  ```ts
211  let filePath = pathDir + "/test";
212  let uri = fileUri.getUriFromPath(filePath);
213  ```