gpt4 book ai didi

java - 属性文件 Java

转载 作者:行者123 更新时间:2023-11-29 04:45:19 25 4
gpt4 key购买 nike

我想使用预配置的属性 File,加载它,然后在默认 config.properties 中已存在的行下添加一行。

我有一个 read() 函数可以读取/加载我的默认 Properties 文件,我有一个 write() 函数可以添加 String key = "hey";字符串值 = "ho";

但是当我启动 read()write() 并查看新的 config.properties 时,我只看到

hey=ho

在我的默认 config.properties 中我得到了

 ha=hi 

hu=hu

但我想在我的新配置中:

ha=hi  

hu=hu

hey=ho

我的代码:

Properties prop = new Properties();
public static PropertiesIParse instance;

public PropertiesIParse() {
instance = this;
}

public PropertiesIParse getInstance() {
return instance;
}

public Properties getProp() {
return prop;
}

public void read() {

InputStream input = null;

try {
String filename = "/config.properties";
input = PropertiesIParse.class.getResourceAsStream(filename);
if (input == null) {
System.out.println("Sorry, unable to find " + filename);
return;
}

getProp().load(input);
Enumeration<?> e = getProp().propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = getProp().getProperty(key);
System.out.println("KeyKey : " + key + ", Value : " + value);
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public void write() {

String filename = "config.properties";
FileOutputStream out;
//prop = new Properties();

String key = "hey";
String value = "ho";

try {

out = new FileOutputStream(filename, true);
getProp().setProperty(key, value);
getProp().store(out, "--type--"); // <---- variable pour dire YYYY MM DD etc.
out.close();

} catch (IOException i) {
System.out.println("Probleme avec l'écriture dans le fichier Property." + i.getMessage());
i.printStackTrace();
}
}

所以,在我的 Main 方法中:

new PropertiesIParse().getInstance().read();
new PropertiesIParse().getInstance().write();

编辑

我改变了你说的,但我得到了同样的东西......一个新的 config.properties 里面只有我的 prop.store(key,value)

Properties prop = new Properties();
static PropertiesIParse instance;

private PropertiesIParse() {
instance = this;
}

public static PropertiesIParse getInstance() {
if (instance== null) {
instance = new PropertiesIParse();
}
return instance;
}

public void read() {

InputStream input = null;
Properties prop = new Properties();

try {
String filename = "config.properties";
input = PropertiesIParse.class.getResourceAsStream(filename);

if (input == null) {
System.out.println("Sorry, unable to find " + filename);
return;
}
prop.load(input);
Enumeration<?> e = prop.propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String value =prop.getProperty(key);
System.out.println("Key : " + key + ", Value : " + value);
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public void write(String key, String value) {

Properties prop = new Properties();
String filename = "./config.properties";
String comment="";
FileOutputStream out;

try {
out = new FileOutputStream(filename, true);
prop.setProperty(key, value);
prop.store(out, "-"+key+"-"+comment);
out.close();
} catch (IOException i) {
System.out.println("Probleme avec l'écriture dans le fichier Property." + i.getMessage());
i.printStackTrace();
}
}

我的主要

PropertiesIParse.getInstance().read();
PropertiesIParse.getInstance().write(new String("ok"),new String("iiiii"));

我只得到了 ok=iiiii ......我肯定错过了那里的东西,谢谢你的帮助

最佳答案

当您使用公共(public)构造函数时,您的单例被打破了。每次你打电话 -

new PropertiesIParse()

将创建一个新的 Properties 实例,该实例将为空。使构造函数私有(private)并更改 getInstance() 如下

public PropertiesIParse getInstance() {
if (instance== null) {
instance = new PropertiesIParse();
}
return instance;
}

然后在不使用new的情况下使用它:

PropertiesIParse.getInstance().read();
PropertiesIParse.getInstance().write();

关于java - 属性文件 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com