Java 如何将新数据附加到属性文件中的现有数据?

Java 如何将新数据附加到属性文件中的现有数据?,java,properties-file,Java,Properties File,我使用以下代码将数据写入属性文件 public void WritePropertiesFile(String key, String data) { Properties configProperty = new Properties(); configProperty.setProperty(key, data); File file = new File("D:\\Helper.properties"); FileOutputStream fileOut = new FileOutputS

我使用以下代码将数据写入属性文件

public void WritePropertiesFile(String key, String data)
{
Properties configProperty = new Properties();
configProperty.setProperty(key, data);
File file = new File("D:\\Helper.properties");
FileOutputStream fileOut = new FileOutputStream(file,true);
configProperty.store(fileOut, "sample properties");
fileOut.close();
}

I am calling the above method 3 times as follows:
help.WritePropertiesFile("appwrite1","write1");
help.WritePropertiesFile("appwrite2","write2");
help.WritePropertiesFile("appwrite3","write3");
但是,Helper.properties文件中的数据显示如下:

#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite1=write1
#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite2=write2
appwrite1=write1
#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite3=write3
appwrite2=write2
appwrite1=write1
appwrite3=write3
appwrite2=write2
appwrite1=write1
我希望数据附加到现有数据,不希望重复数据,如下所示:

#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite1=write1
#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite2=write2
appwrite1=write1
#sample properties
#Mon Jul 01 15:01:45 IST 2013
appwrite3=write3
appwrite2=write2
appwrite1=write1
appwrite3=write3
appwrite2=write2
appwrite1=write1

请建议怎么做

不要在附加模式下打开文件

从文件中读取现有属性,然后重新写入。如果附加到文件,则会附加
属性
对象的所有内容,因为这是您要求的内容

只需替换:

FileOutputStream fileOut = new FileOutputStream(file,true);
与:


旁注:您应该
.close()

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

class WritePropertiesFile {

    public void WritePropertiesFile(String key, String data) {
        FileOutputStream fileOut = null;
        FileInputStream fileIn = null;
        try {
            Properties configProperty = new Properties();

            File file = new File("D:\\Helper.properties");
            fileIn = new FileInputStream(file);
            configProperty.load(fileIn);
            configProperty.setProperty(key, data);
            fileOut = new FileOutputStream(file);
            configProperty.store(fileOut, "sample properties");

        } catch (Exception ex) {
            Logger.getLogger(WritePropertiesFile.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

            try {
                fileOut.close();
            } catch (IOException ex) {
                Logger.getLogger(WritePropertiesFile.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public static void main(String[] args) {
        WritePropertiesFile help = new WritePropertiesFile();
        help.WritePropertiesFile("appwrite1", "write1");
        help.WritePropertiesFile("appwrite2", "write2");
        help.WritePropertiesFile("appwrite3", "write3");
    }
}

嗨,fge,谢谢你的回答。。。我试过你提到的代码,效果很好。但是,当我从其他类文件访问该方法时,遇到了一个问题。我从一个类文件调用上述函数,如下所示:help.writeProperties文件(“appwrite1”,“write1”);help.writeProperties文件(“appwrite2”、“write2”);help.writeProperties文件(“appwrite3”、“write3”);这完全是另一个问题;)您没有显示足够的代码来提供帮助;help.writeProperties文件(“appwrite5”、“write5”);help.writeProperties文件(“appwrite6”、“write6”);输出显示为appwrite4=write4 appwrite5=write5 appwrite6=write6。正在删除从class1写入的数据,并将其替换为class2_请让我知道如何存储从两个类文件写入的数据?使用
Properties.load()
从初始文件加载。我应该在WriteProperties文件(字符串键,字符串数据)方法中使用Properties.load()吗?这里要提的重要一点是,您必须在使用configProperty.load()加载属性后创建FileOutputStream。因为否则,从您说new FileOutputStream(文件)时起,文件将为空。