1# Rust-文件与目录
2
3## 概述
4
5提供Rust侧对应c_utils中[文件与目录](https://gitee.com/openharmony/commonlibrary_c_utils/blob/master/docs/zh-cn/c-utils-guide-directory.md)的接口。其在Rust侧构成utils_rust包(Crate)中的directory_ex模块,包括删除文件,获取文件后缀名和更改文件权限等函数。
6
7## 涉及子模块
8### utils_rust::directory_ex::ffi
9
10子模块`directory_ex::ffi`借助CXX工具通过FFI实现与C++对应代码的互操作。其中各接口通过FFI调用C++侧对应接口,以实现文件与目录相关功能。
11
12由于使用CXX对Rust侧以及C++侧的接口进行绑定,该模块中的接口命名风格与C++一致,其参数类型为兼容C++的Rust类型。
13
14`using utils_rust::directory_ex`
15
16#### 全局函数
17
18|返回类型           |名称           |
19| -------------- | -------------- |
20|String  |**RustGetCurrentProcFullFileName**()<br>获取当前程序的完整的绝对路径。   |
21|String  |**RustGetCurrentProcPath**()<br>获取当前程序的绝对路径。   |
22|String  |**RustExtractFilePath**(fileFullName: &String)<br> 通过输入的文件完整路径去获取对应文件所处目录路径。   |
23|String  |**RustExtractFileName**(fileFullName: &String)<br> 通过输入的文件完整路径去获取对应文件的名称。   |
24|String  |**RustExtractFileExt**(fileName: &String)<br> 通过输入的文件名去获取对应文件的后缀名。   |
25|String  |**RustExcludeTrailingPathDelimiter**(path: &String)<br>返回以去掉'/'结尾的对应路径。   |
26|String  |**RustIncludeTrailingPathDelimiter**(path: &String)<br> 返回以'/'为结尾的对应路径。   |
27|()      |**RustGetDirFiles**(path: &String, files: &mut Vec<String>)<br>获取当前路径及路径子目录下的所有文档。 |
28|bool    |**RustPathToRealPath**(path: &String, realPath: &mut String)<br> 从路径获取真实路径。   |
29|bool    |**IsEmptyFolder**(path: &CxxString)<br>判断路径是否为空。   |
30|bool    |**ForceCreateDirectory**(path: &CxxString)<br> 强制创建带有子目录的目录。   |
31|bool    |**ForceRemoveDirectory**(path: &CxxString)<br>强制删除包含子目录和文档的目录。   |
32|bool    |**RemoveFile**(fileName: &CxxString)<br>删除文件。   |
33|u64     |**GetFolderSize**(path: &CxxString)<br> 获取文件夹大小(字节)。   |
34|bool    |**ChangeModeFile**(fileName: &CxxString, mode: &u32)<br> 更改输入文档的权限。   |
35|bool    |**ChangeModeDirectory**(path: &CxxString, mode: &u32)<br>更改输入目录的权限,包括子目录。   |
36
37
38## 使用示例
391. 测试用例编译运行方法
40
41- 测试用例代码参见 base/test/unittest/rust/utils_rust_directory_test.rs
42
43- 使用开发者自测试框架,使用方法参见:[开发自测试执行框架-测试用例执行](https://gitee.com/openharmony/testfwk_developer_test#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E6%89%A7%E8%A1%8C)
44
45- 使用以下具体命令以运行`utils_rust::directory_ex`对应测试用例
46
47```bash
48run -t UT -tp utils -ts utils_rust_directory_test
49```