Сохранить результат выполнения в java в файле свойств

Я написал код на java для запуска некоторых скриптов, которые могут возвращать разные результаты в зависимости от настройки среды. Я хотел бы сохранить результат каждого выполнения. Я пытаюсь использовать файл свойств, но каждый раз, когда он выполняется, он перезаписывает предыдущий результат в config.properties. Я провел исследование, но не нашел наиболее вероятного примера. Это мой код для возврата файла свойств. Значение, которое будет отличаться, это TCpassed и TCfailed при каждом выполнении.

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, чтобы отличить от предыдущего результата?

Спасибо перед


person user3922604    schedule 04.05.2015    source источник


Ответы (2)


Вы можете использовать режим добавления с помощью конструктора 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
person barunsthakur    schedule 04.05.2015

Файл свойств обычно представляет собой пары ключ-значение, например.

TCpassed=9
TCfailed=1

Поэтому, если вы хотите сохранить результат каждого выполнения, вам нужен другой ключ для каждого выполнения. И если вы хотите добавить в файл свойств, вы можете:

  1. Загрузите файл свойств как объект свойств;
  2. Добавить новую запись в объект «Свойства»;
  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());
    }
person Harry.Chen    schedule 04.05.2015