book-content/%root/test-collection/enhanced-frontend/test-code-highlight.md

111 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
configurations:
prism.plugins: "treeview"
---
代码纯手打,没有经过 IDE 查错,如发现错误还请立即 issue
## 创建资源文件索引对象
要使用 ResourceTools首先需要建立一个 ResourcesPackage 对象,它是你的项目的资源文件的索引对象。
```java
// 导入类
import cc.sukazyo.restools.ResourcesPackage;
/* ... */
//创建对象
ResourcesPackage pack = new ResourcesPackage(Test.class, "assets");
```
构造函数的第一个参数是一个 Class 对象,用于确定你的项目。
第二个参数是在项目文件为根目录的路径下,你的资源文件的位置。
一般来说在IDE等项目管理环境下一个项目的源文件路径如下
```treeview
src/
|-- main/
| |-- java/
| └── resources/
└── test/
|-- java/
└── resources/
```
这个路径指的就是在{.lang-url}`src/main/resources`目录下的{.lang-url}`assets`文件夹。
## 获取资源文件
不同于 Java 中的 `java.io.File`{.lang-java} 的是ResourceTools 使用了文件和文件夹对象分离的方式因此ResourcesPackage 对象拥有以下两个 get 方法:
```java
// 获取文件
public ResFile getResource (String path) throws IOException;
// 获取目录
public ResDir getResDir (String path) throws IOException;
```
前一个用于获取文件对象,后一个则是获取目录对象。
其中的 `path` 参数为文件/目录相对于设置的资源文件根目录(`"assetes"`)的位置。
例如如果一个项目的 resources结构如下
```treeview
resources/
|-- assets/
| |-- propertes.io
| └── lang/
| └── default.lang
└── idn/
|-- ios/
└── windows/
```
若要获取`default.lang`文件,则使用以下方法:
```java
/** 之前创建的资源文件索引类:
* ResourcesPackage pack = new ResourcesPackage(Test.class, "assets");
*/
pack.getResource("/lang/default.lang");
```
## ResFile 使用
```java
// 获取到一个文件
ResFile res = pack.getResource("/lang/default.lang");
InputStream ins = res.read(); // 获取到这个文件的流
String content = res.readAsString(); // 直接获取这个文件的纯文本字符串
// 没有测试如果将其应用在非纯文本文件上的效果,
// 同时 Sukazyo 认为也不会有硬读非纯文本文件的人
// 硬读纯文本文件的话,后果请自负
```
## ResDir 使用
```java
// 获取到一个目录
ResFile res = pack.getResource("/");
ResFile[] reses = res.listFiles(); // 读取到直接属于这个目录下的文件
// 不读间接属于目录的文件
// 在这个例子中会读取到 properties.io
ResDir[] dirs = res.listDirs(); // 和上文类似,读取直接属于此目录的子目录
// 这个例子中会读到 lang 目录
File target = new File("./assets/"); // 一个 File 对象,指向的是程序运行目录下的 assets 子目录
res.extract(target, false); // 将这个目录下的所有文件和文件夹解压到目标目录中
// 会解压 properties.io lang/ lang/default.lang
// 如果 target 目录不存在的话会创建这个目录
// 第二个参数决定是否覆盖已存在的文件true为覆盖false为不覆盖
res.extract(target); // 上一个方法的简略版
// 覆盖开关始终为 true
```