将执行结果存储在属性文件中的java中

时间:2015-05-04 07:29:27

标签: java runtime config execution properties-file

我在java中编写了一个代码来运行一些脚本,这些脚本可以根据环境设置返回不同的结果。我想存储每次执行的结果。我尝试使用属性文件,但每次执行时,它都会覆盖config.properties中的上一个结果。我做了一项研究,但没有找到任何最可能的例子。这是我返回属性文件的代码。每次执行时,TCpassedTCfailed的值都不同。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class ExecutionProperties {

    public void setConfigProperties(int tcPassed, int tcFailed){
        Properties prop = new Properties();
        OutputStream output = null;

        try {

            output = new FileOutputStream("config.properties");

            // set the properties value
            prop.setProperty("TCpassed", ""+ tcPassed);
            prop.setProperty("TCfailed", ""+ tcFailed);

            // save properties to project root folder
            prop.store(output, null);

        } catch (IOException io) {
            io.printStackTrace();
        } finally {
            if (output != null) {
                try {
                    output.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }

}

是否有可能获得执行时间并将其存储在config.properties中以便与之前的结果区分开来?

之前谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用构造函数[a-zA-Z]来使用追加模式 执行几次后的示例属性文件

FileOutputStream("config.properties", true)

答案 1 :(得分:0)

属性文件通常是键值对,例如

TCpassed=9
TCfailed=1

因此,如果要存储每次执行的结果,则每次执行都需要不同的密钥。 如果你想附加到属性文件,你可以:

  1. 将属性文件加载为Properties对象;
  2. 向Properties对象添加新条目;
  3. 将属性对象写回文件;
  4. 以下是一个例子:

      public static void appendTestResult(File propertyFile, int tcPassed, int tcFailed) {
            try {
                Properties properties = loadProperties(propertyFile);
                String testId = getTestID();
                properties.setProperty("TCpassed_" + testId, String.valueOf(tcPassed));
                properties.setProperty("TCfailed_" + testId, String.valueOf(tcFailed));
                saveProperties(propertyFile, properties);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void saveProperties(File propertyFile, Properties properties) throws IOException {
            OutputStream outputStream = null;
            try {
                outputStream = FileUtils.openOutputStream(propertyFile);
                properties.store(outputStream, "new test");
            } finally {
                IOUtils.closeQuietly(outputStream);
            }
        }
    
        public static Properties loadProperties(File propertyFile) throws IOException {
            InputStream inputStream = null;
            try {
                inputStream = FileUtils.openInputStream(propertyFile);
                Properties properties = new Properties();
                properties.load(inputStream);
                return properties;
            } finally {
                IOUtils.closeQuietly(inputStream);
            }
        }
    
        public static String getTestID() {
            return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        }