data.txt文件的内容
pin=9876
balance=9001
investment=10000
interest=0.065
isLockedOut=false
目前我的代码:
import java.io.*;
import java.util.Properties;
public class SetData extends ATM {
public static void setIsLockedOut(boolean isLockedOut) { //Sets the isLockedOut variable
try {
Properties data = new Properties();
FileOutputStream output = new FileOutputStream("data.txt");
if (isLockedOut = true) {
data.setProperty("isLockedOut", "true");
data.store(output, null);
output.close(); //Closes the output stream
}
else {
data.setProperty("isLockedOut", "false");
data.store(output, null);
output.close();
}
}
catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
我也检查并提到了StackOverflow上的类似问题(Updating property value in properties file without deleting other values)。
从另一个类调用方法'setIsLockedOut'。 当我调用此方法在'data.txt'文件中将'isLockedOut'变量设置为true时,除了'isLockedOut'变量之外,所有其他变量都将被删除。这是输出:
#Sun Nov 17 15:44:42 EST 2013
isLockedOut=true
所以我的问题是,如何在不删除文件中的其他值的情况下更新属性值?
答案 0 :(得分:0)
您所做的只是覆盖data.txt文件,其内容为data
,这只是“isLockedOut”的值。看来你想做的就是用data.txt中的所有属性覆盖data.txt,再加上“isLockedOut”的更新值。为此,您需要打开data.txt进行阅读并将其内容读入data
,然后修改data
,然后使用新的data
覆盖data.txt。跳过第一步是导致问题的原因。
您需要使用FileInputStream
和load
method。使用它们的方式与使用FileOutputStream
和store
的方式非常相似。