属性文件键中没有“\”的空格字符

时间:2015-12-17 08:38:58

标签: java

我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

4 个答案:

答案 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") );
    }

}