1# oh_file_uri.h 2<!--Kit: Core File Kit--> 3<!--Subsystem: FileManagement--> 4<!--Owner: @lvzhenjie--> 5<!--Designer: @wang_zhangjun; @chenxi0605--> 6<!--Tester: @liuhonggang123--> 7<!--Adviser: @foryourself--> 8 9## 概述 10 11提供uri和路径path之间的相互转换,目录uri获取,以及uri的有效性校验的方法。 12 13**库:** libohfileuri.so 14 15**系统能力:** SystemCapability.FileManagement.AppFileService 16 17**起始版本:** 12 18 19**相关模块:** [fileUri](capi-fileuri.md) 20 21## 汇总 22 23### 函数 24 25| 名称 | 描述 | 26| -- | -- | 27| [FileManagement_ErrCode OH_FileUri_GetUriFromPath(const char *path, unsigned int length, char **result)](#oh_fileuri_geturifrompath) | 通过传入的路径path生成应用自己的uri;<br> 将path转uri时,路径中的中文及非数字字母的特殊字符将会被编译成对应的ASCII码,拼接在uri中。 | 28| [FileManagement_ErrCode OH_FileUri_GetPathFromUri(const char *uri, unsigned int length, char **result)](#oh_fileuri_getpathfromuri) | 将uri转换成对应的沙箱路径path。 <br> 1、uri转path过程中会将uri中存在的ASCII码进行解码后拼接在原处,非系统接口生成的uri中可能存在ASCII码解析范围之外的字符, 导致字符串无法正常拼接;2、转换处理为系统约定的字符串替换规则(规则随系统演进可能会发生变化),转换过程中不进行路径校验操作,无法保证转换结果的一定可以访问。 | 29| [FileManagement_ErrCode OH_FileUri_GetFullDirectoryUri(const char *uri, unsigned int length, char **result)](#oh_fileuri_getfulldirectoryuri) | 获取所在路径uri。uri指向文件则返回所在路径的uri,uri指向目录则不处理直接返回原串;<br> uri指向的文件不存在或属性获取失败则返回空串。 | 30| [bool OH_FileUri_IsValidUri(const char *uri, unsigned int length)](#oh_fileuri_isvaliduri) | 判断传入的uri的格式是否正确。仅校验uri是否满足系统定义的格式规范,不校验uri的有效性。 | 31| [FileManagement_ErrCode OH_FileUri_GetFileName(const char *uri, unsigned int length, char **result)](#oh_fileuri_getfilename) | 通过传入的uri获取到对应的文件名称。(如果文件名中存在ASCII码将会被解码处理后拼接在原处)。 | 32 33## 函数说明 34 35### OH_FileUri_GetUriFromPath() 36 37``` 38FileManagement_ErrCode OH_FileUri_GetUriFromPath(const char *path, unsigned int length, char **result) 39``` 40 41**描述** 42 43通过传入的路径path生成应用自己的uri;<br> 将path转uri时,路径中的中文及非数字字母的特殊字符将会被编译成对应的ASCII码,拼接在uri中。 44 45**系统能力:** SystemCapability.FileManagement.AppFileService 46 47**起始版本:** 12 48 49 50**参数:** 51 52| 参数项 | 描述 | 53| -- | -- | 54| const char *path | 表示要转换的路径。 | 55| unsigned int length | 表示要转换路径的字节长度。 | 56| char **result | 表示转换后的uri, 需要使用standard library标准库的free()方法释放申请的资源。 | 57 58**返回:** 59 60| 类型 | 说明 | 61| -- | -- | 62| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回特定的错误码值,详细信息可以查看[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> ERR_PARAMS 401 - 输入参数无效。可能的原因:<br> 1. 参数path为空指针;<br> 2. 参数result为空指针;<br> 3. 输入的path长度与length不一致。<br> [ERR_UNKNOWN](capi-error-code-h.md#filemanagement_errcode) 13900042 - 未知错误。转换后的uri长度为0会返回此错误。<br> [ERR_ENOMEM](capi-error-code-h.md#filemanagement_errcode) 13900011 - 分配或者拷贝内存失败。<br> [ERR_OK](capi-error-code-h.md#filemanagement_errcode) 0 - 接口调用成功。 | 63 64### OH_FileUri_GetPathFromUri() 65 66``` 67FileManagement_ErrCode OH_FileUri_GetPathFromUri(const char *uri, unsigned int length, char **result) 68``` 69 70**描述** 71 72将uri转换成对应的沙箱路径path。 <br> 1、uri转path过程中会将uri中存在的ASCII码进行解码后拼接在原处,非系统接口生成的uri中可能存在ASCII码解析范围之外的字符, 导致字符串无法正常拼接;2、转换处理为系统约定的字符串替换规则(规则随系统演进可能会发生变化),转换过程中不进行路径校验操作,无法保证转换结果的一定可以访问。 73 74**系统能力:** SystemCapability.FileManagement.AppFileService 75 76**起始版本:** 12 77 78 79**参数:** 80 81| 参数项 | 描述 | 82| -- | -- | 83| const char *uri | 表示要转换的uri。 | 84| unsigned int length | 表示要转换uri的字节长度。 | 85| char **result | 表示转换后的路径path。需要使用standard library标准库的free()方法释放申请的资源。 | 86 87**返回:** 88 89| 类型 | 说明 | 90| -- | -- | 91| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回特定的错误码值,详细信息可以查看[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> {@link ERR_PARAMS} 401 - 输入参数无效。可能的原因:<br> 1. 参数uri为空指针;<br> 2. 参数result为空指针;<br> 3. 输入的uri长度与length不一致。<br> [ERR_UNKNOWN](capi-error-code-h.md#filemanagement_errcode) 13900042 - 未知错误。转换后的路径path长度为0会返回此错误。<br> [ERR_ENOMEM](capi-error-code-h.md#filemanagement_errcode) 13900011 - 分配或者拷贝内存失败。<br> [ERR_OK](capi-error-code-h.md#filemanagement_errcode) 0 - 接口调用成功。 | 92 93### OH_FileUri_GetFullDirectoryUri() 94 95``` 96FileManagement_ErrCode OH_FileUri_GetFullDirectoryUri(const char *uri, unsigned int length, char **result) 97``` 98 99**描述** 100 101获取所在路径uri。uri指向文件则返回所在路径的uri,uri指向目录则不处理直接返回原串;<br> uri指向的文件不存在或属性获取失败则返回空串。 102 103**系统能力:** SystemCapability.FileManagement.AppFileService 104 105**起始版本:** 12 106 107 108**参数:** 109 110| 参数项 | 描述 | 111| -- | -- | 112| const char *uri | 表示要获取目录的uri的原始uri。 | 113| unsigned int length | 表示原始uri的字节长度。 | 114| char **result | 表示获取到的目录uri,需要使用standard library标准库的free()方法释放申请的资源。 | 115 116**返回:** 117 118| 类型 | 说明 | 119| -- | -- | 120| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回特定的错误码值,详细信息可以查看[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> ERR_PARAMS 401 - 输入参数无效。可能的原因:<br> 1. 参数uri为空指针;<br> 2. 参数result为空指针;<br> 3. 输入的uri长度与length不一致。<br> [ERR_ENOMEM](capi-error-code-h.md#filemanagement_errcode) 13900011 - 分配或者拷贝内存失败。<br> [ERR_ENOENT](capi-error-code-h.md#filemanagement_errcode) 13900002 - 没有该文件或目录。<br> [ERR_UNKNOWN](capi-error-code-h.md#filemanagement_errcode) 13900042 - 未知错误。获取到的目录uri长度为0会返回此错误。<br> [ERR_OK](capi-error-code-h.md#filemanagement_errcode) 0 - 接口调用成功。 | 121 122### OH_FileUri_IsValidUri() 123 124``` 125bool OH_FileUri_IsValidUri(const char *uri, unsigned int length) 126``` 127 128**描述** 129 130判断传入的uri的格式是否正确。仅校验uri是否满足系统定义的格式规范,不校验uri的有效性。 131 132**系统能力:** SystemCapability.FileManagement.AppFileService 133 134**起始版本:** 12 135 136 137**参数:** 138 139| 参数项 | 描述 | 140| -- | -- | 141| const char *uri | 表示需要校验的uri。 | 142| unsigned int length | 需要校验uri的字节长度。 | 143 144**返回:** 145 146| 类型 | 说明 | 147| -- | -- | 148| bool | 返回 true: 传入uri是有效的uri;false: 传入的uri是无效的uri。 | 149 150### OH_FileUri_GetFileName() 151 152``` 153FileManagement_ErrCode OH_FileUri_GetFileName(const char *uri, unsigned int length, char **result) 154``` 155 156**描述** 157 158通过传入的uri获取到对应的文件名称。(如果文件名中存在ASCII码将会被解码处理后拼接在原处)。 159 160**系统能力:** SystemCapability.FileManagement.AppFileService 161 162**起始版本:** 13 163 164 165**参数:** 166 167| 参数项 | 描述 | 168| -- | -- | 169| const char *uri | 传入的uri。 | 170| unsigned int length | 表示传入uri的字节长度。 | 171| char **result | 表示转换后的名称。需要使用standard library标准库的free()方法释放申请的资源。 | 172 173**返回:** 174 175| 类型 | 说明 | 176| -- | -- | 177| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回特定的错误码值,详细信息可以查看[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> ERR_PARAMS 401 - 输入参数无效。可能的原因:<br> 1. 参数uri为空指针;<br> 2. 参数result为空指针;<br> 3. 输入的uri长度与length不一致;<br> 4. uri格式不正确。<br> [ERR_ENOMEM](capi-error-code-h.md#filemanagement_errcode) 13900011 - 分配或者拷贝内存失败。<br> [ERR_OK](capi-error-code-h.md#filemanagement_errcode) 0 - 接口调用成功。 | 178 179 180