Как добавить новые данные к существующим данным в файле свойств?
Я использую следующий код для записи данных в файл свойств
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 ответа:
Просто не открывайте файл в режиме добавления.
Вы читаете существующие свойства из файла и записываете их снова. Если вы добавите к файлу, все содержимое объекта
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"); } }