繁体   English   中英

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

[英]Store execution result in java in 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中,以便与先前的结果区分开?

之前感谢

执行两次后FileOutputStream("config.properties", true)可以使用构造函数FileOutputStream("config.properties", true)使用追加模式

#Mon May 04 13:03:29 IST 2015
TCpassed=1
TCfailed=1
#Mon May 04 13:04:03 IST 2015
TCpassed=1
TCfailed=1

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

TCpassed=9
TCfailed=1

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

  1. 将属性文件作为Properties对象加载;
  2. 将新条目添加到Properties对象;
  3. 将属性对象写回文件;

这是一个例子:

  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());
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM