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
所以我的问题是,如何在不删除文件中其他值的情况下更新属性值?
最佳答案
您所做的就是用data
的内容覆盖data.txt 文件,这只是“isLockedOut”的值。看来您想要做的是使用 data.txt 中曾经存在的所有属性以及“isLockedOut”的更新值来覆盖 data.txt。为此,您需要打开data.txt进行读取,并将其内容读取到data
中,然后修改data
,然后用新的data覆盖data.txt
。跳过第一步是导致您出现问题的原因。
您需要使用 FileInputStream
和 load
method 。使用它们的方式与使用 FileOutputStream
和 store
的方式大致相同。
关于java - 如何在不删除其他变量的情况下更新java中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027399/