我正在尝试为我正在为 Minecraft 制作的 mod 生成属性文件。
该模组将大量依赖此属性文件。它应该看起来像这样:
#Comment
#More Comment
#Even more comment explaining.
Button1=Button1 #The data after the equals they would change
Button1Command=/help
Button2=Button2
Button2Command=/rules
这将重复超过 30 个按钮。下面是我用来在配置中生成 19 个选项的测试代码:
Properties p = new Properties();
try {
File configDir = new File(Minecraft.getMinecraftDir(), "/config/");
File config = new File(configDir, "FogHelperConfig.cfg");
// set the properties value
for(int c = 18;c >= 0;c--)
{
p.setProperty("Button"+c, "Button"+c);
}
// save properties minecraft config folder.
p.store(new FileOutputStream(config), null);
} catch (IOException ex) {
ex.printStackTrace();
}
}
这个的输出
Button18=Button18
Button17=Button17
Button9=Button9
Button16=Button16
Button8=Button8
Button15=Button15
Button7=Button7
Button14=Button14
Button6=Button6
Button13=Button13
Button5=Button5
Button12=Button12
Button4=Button4
Button11=Button11
Button3=Button3
Button10=Button10
Button2=Button2
Button1=Button1
Button0=Button0
当然,当我处理一些需要按逻辑顺序排列的事情时,这是一个主要问题,因为它有编号。如果没有数字,我可以看到这是可以的,但在这种情况下它必须是有序的。
我假设我可以做一些事情或者某种解决方法来解决 Java Properties 类所存在的这个问题。我愿意拥有一个由我手工制作并与 mod 一起打包的属性文件,然后将其放置在特定位置,尽管我更希望生成它,因为它对用户更友好。
我需要做的另一件事是向这个 prop 文件添加注释,尽管我不太确定如何做。
欢迎任何不同的方式来做到这一点!不管怎样都有效!
提前致谢!
最佳答案
我使用下面的代码效果很好。自然排序对我来说已经足够好了。您可能必须将按钮命名为“Button01”。
import java.io.StringWriter;
import java.util.*;
public class SortedProperties extends Properties {
@Override public Set<Object> keySet() {
return Collections.unmodifiableSet(new TreeSet<Object>(super.keySet()));
}
@Override public synchronized Enumeration<Object> keys() {
return Collections.enumeration(new TreeSet<Object>(super.keySet()));
}
public static void main(String[] args) throws Exception {
Properties properties = new SortedProperties() {
{
for (int c = 18; c >= 0; c--) {
String name = "Button" + (c < 10 ? "0" : "") + c;
put(name, name);
}
}
};
StringWriter stringWriter = new StringWriter();
properties.store(stringWriter, "foo");
System.err.println(stringWriter.toString());
}
private static final long serialVersionUID = 1L;
}
关于java - 如何阻止属性类以不合逻辑的顺序输出到文件。解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385117/