我在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
中以便与之前的结果区分开来?
之前谢谢
答案 0 :(得分:0)
您可以使用构造函数[a-zA-Z]
来使用追加模式
执行几次后的示例属性文件
FileOutputStream("config.properties", true)
答案 1 :(得分:0)
属性文件通常是键值对,例如
TCpassed=9
TCfailed=1
因此,如果要存储每次执行的结果,则每次执行都需要不同的密钥。 如果你想附加到属性文件,你可以:
以下是一个例子:
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());
}