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