我reed属性文件:
InputStream input = new FileInputStream("data.ini");
Reader reader = new InputStreamReader(input, Charset.forName("UTF-8"));
Properties prop = new Properties();
prop.load(reader);
我的属性文件Key
包含空格,我需要放置\
字符才能正确读取它。是否有可能不会在属性文件中放置\
字符并以正确的方式读取它?
属性文件内容:
aaa\ bbb=0
答案 0 :(得分:2)
如load JavaDoc:
中所述该键包含从第一个非空格字符开始的行中的所有字符,但不包括第一个未转义的'=',':',或空格字符强>除了行终止符。
所以答案是否定的。
通常,键包含其他分隔符,我的经验是使用'.'
。
aaa.bbb=0
答案 1 :(得分:0)
你可以使用Java Unicode转义属性文件中的所有内容, \ u0020对于空白,使用它你的问题就会得到解决。
答案 2 :(得分:0)
它不像使用内置阅读器那么干净,但我相信可以使用以下代码。
InputStream input = new FileInputStream("data.ini");
Reader reader = new InputStreamReader(input, Charset.forName("UTF-8"));
BufferedReader br = new BufferedReader(reader);
Properties prop = new Properties();
String line = br.readLine();
while (line != null)
{
int index = line.indexOf("=");
if (index > 0)
{
prop.setProperty(line.substring(0, index), line(index + 1));
}
}
我没有抓住或处理潜在的例外情况。
答案 3 :(得分:0)
也可以从XML文件加载属性......制作更整洁的代码。
<强> properties.xml中:强>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Sample Properties file in XML</comment>
<entry key="PropertyWithoutSpaces">Property value</entry>
<entry key="Property With Spaces">Property value</entry>
</properties>
<强> PropertyTest.java:强>
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertyTest {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
properties.loadFromXML( new FileInputStream("properties.xml") );
System.out.println( properties.getProperty("Property With Spaces") );
System.out.println( properties.getProperty("PropertyWithoutSpaces") );
}
}