如何在不删除其他变量的情况下更新java中的属性值

时间:2013-11-17 05:02:38

标签: java variables properties

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

所以我的问题是,如何在不删除文件中的其他值的情况下更新属性值?

1 个答案:

答案 0 :(得分:0)

您所做的只是覆盖data.txt文件,其内容为data,这只是“isLockedOut”的值。看来你想做的就是用data.txt中的所有属性覆盖data.txt,再加上“isLockedOut”的更新值。为此,您需要打开data.txt进行阅读并将其内容读入data,然后修改data,然后使用新的data覆盖data.txt。跳过第一步是导致问题的原因。

您需要使用FileInputStreamload method。使用它们的方式与使用FileOutputStreamstore的方式非常相似。