Как добавить новые данные к существующим данным в файле свойств?


Я использую следующий код для записи данных в файл свойств

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.файл свойств отображается следующим образом:

#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

Пожалуйста, подскажите, как это сделать?

2 7

2 ответа:

Просто не открывайте файл в режиме добавления.

Вы читаете существующие свойства из файла и записываете их снова. Если вы добавите к файлу, все содержимое объекта Properties будет добавлено, так как это то, что вы просили.

Просто замените:

FileOutputStream fileOut = new FileOutputStream(file,true);

С:

FileOutputStream fileOut = new FileOutputStream(file);
Боковое Примечание: Вы должны .close() ваш выходной поток в блоке finally.

Я знаю, что на этот вопрос был дан ответ, но просто для будущего справочного кода должен выглядеть более-менее так:

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");
    }
}