更新/编辑属性文件

时间:2016-01-13 19:20:48

标签: java testing properties

我正在测试使用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);
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

在进行一些挖掘后,我不认为在JVM启动后重新加载ClassLoader中的文件是允许的。