路径如上图
目前是想要从MaterialKcController获取到config-example.toml和abi里的文件
但是jar包获取路径用相对不行,所以使用IO流来获取。
主要是使用输入流来创建临时的文件,然后将文件里的内容全部输入到临时文件中,再将临时文件的路径输出并获取到
代码如下:
// 获取 ABI 文件的输入流
InputStream abiInputStream = getClass().getClassLoader().getResourceAsStream("/abi/yjwz.abi");
// 创建一个临时目录,用于存放临时的 ABI 文件
File tempAbiFolder = Files.createTempDirectory("tempAbiFolder", (FileAttribute<?>[])new FileAttribute[0]).toFile();
// 在临时目录中创建一个临时的 ABI 文件
File tempAbiFile = new File(tempAbiFolder, "yjwz.abi");
// 创建输出流,用于将 ABI 文件内容写入临时文件
OutputStream tempOutput = new FileOutputStream(tempAbiFile);
// 缓冲区,用于存储从输入流读取的数据
byte[] buffer = new byte[10240];
int lengthRead;
// 读取 ABI 文件内容并写入临时文件
while ((lengthRead = abiInputStream.read(buffer)) > 0)
tempOutput.write(buffer, 0, lengthRead);
// 刷新输出流并关闭
tempOutput.flush();
tempOutput.close();
// 获取临时文件的绝对路径
String abiFilePath = tempAbiFile.getAbsolutePath();
// 获取配置文件的输入流
InputStream configInput = getClass().getClassLoader().getResourceAsStream("config-example.toml");
// 创建一个临时文件,用于存放配置文件
File tempConfigFile = File.createTempFile("tempConfig", ".toml");
// 创建输出流,用于将配置文件内容写入临时文件
OutputStream tempOutput1 = new FileOutputStream(tempConfigFile);
// 缓冲区,用于存储从输入流读取的数据
byte[] buffer1 = new byte[1024];
int lengthRead1;
// 读取配置文件内容并写入临时文件
while ((lengthRead1 = configInput.read(buffer1)) > 0)
tempOutput1.write(buffer1, 0, lengthRead1);
// 刷新输出流并关闭
tempOutput1.flush();
tempOutput1.close();
其中abiFilePath即为abi文件的路径
tempConfigFile.getAbsolutePath()为config-example.toml的路径标签:ABI,配置文件,abi,路径,jar,File,new,临时文件 From: https://blog.csdn.net/weixin_64288302/article/details/139769372