【问题标题】:Store execution result in java in properties file在属性文件中存储java中的执行结果
【发布时间】:2015-07-13 12:35:08
【问题描述】:

我在 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中,以便与之前的结果进行区分?

感谢之前

【问题讨论】:

    标签: java runtime config execution properties-file


    【解决方案1】:

    您可以使用构造函数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
    

    【讨论】:

      【解决方案2】:

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

      TCpassed=9
      TCfailed=1
      

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

      1. 将属性文件加载为属性对象;
      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());
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        • 2017-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多