我正在测试使用property(mytest.properties)的库(jar)。他们的方式库(jar)通过执行
加载属性 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("mytest.properties");
所以我要测试的是当属性文件存在时以及何时不退出时会发生什么。为了测试这个,我需要在JVM启动后编辑属性文件。我试过这样做但不起作用。 Bellow是我试图编辑属性文件的代码,但这总是返回空字符串。
main_mytest.properties的内容是:
a=hello world
b=hello java
mytest.properties和empty.txt的内容为空。
""
我的班级是:
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class MyPropertyFiles {
final static String resourcesPath = "./mytestproj/src/main/resources";
public static void main(String [] args) throws IOException {
Path source = Paths.get(resourcesPath + "/main_mytest.properties");
Path destination = Paths.get(resourcesPath + "/mytest.properties");
Path empty = Paths.get(resourcesPath + "/empty.txt");
try
{
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("mytest.properties");
StringWriter writer = new StringWriter();
IOUtils.copy(input, writer, "utf-8");
String theString = writer.toString();
System.out.println("!!!!!!!!!!!!!!!! The String: \n" + theString);
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
Files.copy(empty, destination, StandardCopyOption.REPLACE_EXISTING);
}
}
}
答案 0 :(得分:0)
在进行一些挖掘后,我不认为在JVM启动后重新加载ClassLoader
中的文件是允许的。