在不转义值的情况下读取 Java 属性文件
2022-09-02 08:58:48
我的应用程序需要使用 .properties 文件进行配置。在属性文件中,允许用户指定路径。
问题
属性文件需要对值进行转义,例如
dir = c:\\mydir
需要
我需要一些方法来接受一个属性文件,其中的值没有转义,以便用户可以指定:
dir = c:\mydir
我的应用程序需要使用 .properties 文件进行配置。在属性文件中,允许用户指定路径。
问题
属性文件需要对值进行转义,例如
dir = c:\\mydir
需要
我需要一些方法来接受一个属性文件,其中的值没有转义,以便用户可以指定:
dir = c:\mydir
为什么不简单地扩展属性类以包含双正斜杠的剥离。这样做的一个很好的功能是,通过程序的其余部分,您仍然可以使用原始类。Properties
public class PropertiesEx extends Properties {
public void load(FileInputStream fis) throws IOException {
Scanner in = new Scanner(fis);
ByteArrayOutputStream out = new ByteArrayOutputStream();
while(in.hasNext()) {
out.write(in.nextLine().replace("\\","\\\\").getBytes());
out.write("\n".getBytes());
}
InputStream is = new ByteArrayInputStream(out.toByteArray());
super.load(is);
}
}
使用新类非常简单,
PropertiesEx p = new PropertiesEx();
p.load(new FileInputStream("C:\\temp\\demo.properties"));
p.list(System.out);
剥离代码也可以改进,但一般原则就在那里。