如何在java中读取带空格的属性名称

我正在尝试使用以下代码加载属性文件中存在的所有属性名称:

for(Enumeration en = (Enumeration) prop.propertyNames();en.hasMoreElements();){ String key = (String)en.nextElement(); System.out.println("Property name is "+key); } 

但我的属性文件具有以下内容:

username=

password=

Parent file name=

Child file name =

运行代码后,我输出为:

username password Parent Child

如果属性名称有空格,则只返回第一个单词。

任何人都可以告诉我该怎么做?

您可以转义属性文件中的空格,但我认为它看起来会非常难看。

 username=a password=b Parent\ file\ name=c Child\ file\ name=d 

您最好使用split()indexOf()编写自己的实现,或者您希望避免任何未来的错误和/或令人头疼的任何内容。

Java.util.Properties ,从属性文件加载时,’=’,’:’或空格字符是键/值分隔符。

下面是其public void load(Reader reader)详细Javadoc public void load(Reader reader)

该键包含从第一个非空格字符开始的行中的所有字符,但不包括第一个未转义的’=’,’:’或除行终止符之外的空格字符。 所有这些密钥终止字符都可以通过使用前面的反斜杠字符转义它们来包含在密钥中。 http://docs.oracle.com/javase/6/docs/api/

我是这样做的:

 public class PropHelper { final static String PROPERTY_FILEPATH = "blah/blah.properties"; static String getPropertyWithSpaces(String property, String delimiter) { try { FileReader reader = new FileReader(PROPERTY_FILEPATH); Properties propertiesObj = new Properties(); propertiesObj.load(reader); return propertiesObj.getProperty(property).replaceAll(delimiter, ""); } catch (Exception ex) { System.out.println("FATAL ERROR: " + ex.getMessage()); System.exit(1); } return null; } } 

.properties文件中的某个地方:

 settings = ` ⚙ Settings ` 

这就是我所说的:

 System.out.println("|" + PropHelper.getPropertyWithSpaces("settings", "`") + "|"); 

此方法适用于前导,内部和尾随空格。 请享用!

它似乎对我来说很好; 这是我的代码:

  Properties prop = new Properties(); prop.setProperty("test1", "val1"); prop.setProperty("test number 2", "val number 2"); prop.setProperty("test 3", "val3"); prop.setProperty("test #4", "val #4"); for(Enumeration en = (Enumeration) prop.propertyNames();en.hasMoreElements();){ String key = (String)en.nextElement(); System.out.println("'" + key + "'='" + prop.getProperty(key) + "'"); } 

并输出:

 'test 3'='val3' 'test number 2'='val number 2' 'test1'='val1' 'test #4'='val #4' 

您可以将其与您的设置进行比较,因为我们的显示似乎是相同的。 如果您没有看到任何内容,请添加完整代码,我将会看一看