如何将新数据附加到属性文件中的现有数据?
Posted
技术标签:
【中文标题】如何将新数据附加到属性文件中的现有数据?【英文标题】:How to append new data to existing data in properties file? 【发布时间】:2013-06-28 09:24:31 【问题描述】:我正在使用以下代码将数据写入属性文件
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
请建议怎么做?
【问题讨论】:
【参考方案1】:我知道这个问题已经得到解答,但仅供将来参考,代码应该看起来更像这样:
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");
【讨论】:
这里要提到的重要一点是,您必须在使用 configProperty.load() 加载属性后创建 FileOutputStream。因为否则从您说 new FileOutputStream(file) 开始,文件将为空。【参考方案2】:只是不要以附加模式打开文件。
您从文件中读取现有属性并再次写入它们。如果你追加到文件中,Properties
对象的所有内容都将被追加,因为这是你要求的。
只需替换:
FileOutputStream fileOut = new FileOutputStream(file,true);
与:
FileOutputStream fileOut = new FileOutputStream(file);
旁注:您应该在finally
块中.close()
输出流。
【讨论】:
您好,谢谢您的回答...我尝试了您提到的代码,它工作正常。但是当我从其他类文件访问该方法时遇到问题。我从一个类文件中调用上述函数,如下所示:help.WritePropertiesFile("appwrite1","write1"); help.WritePropertiesFile("appwrite2","write2"); help.WritePropertiesFile("appwrite3","write3"); 这完全是另一个问题;)您没有显示足够的代码来帮助解决这个问题。 从我调用的其他类文件如下:help.WritePropertiesFile("appwrite4","write4"); help.WritePropertiesFile("appwrite5","write5"); help.WritePropertiesFile("appwrite6","write6");输出显示为 appwrite4 = write4 appwrite5 = write5 appwrite6 = write6 它正在删除从 class1 写入的数据并将其替换为 class2..._请告诉我如何存储从两个类文件写入的数据? 使用Properties.load()
从初始文件加载。
我应该在 WritePropertiesFile(String key, String data) 方法中使用 Properties.load() 吗?以上是关于如何将新数据附加到属性文件中的现有数据?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不使用 XDocument 的情况下将新的 xml 数据附加到 xml 文件中的现有 xml?
如何使用 pymongo 将新的值数组附加到 mongodb 中的现有数组文档?