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

如何在java中读取带空格的属性名,java,properties,Java,Properties,我正在尝试使用以下代码加载属性文件中的所有属性名称: for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){ String key = (String)en.nextElement(); System.out.println("Property name is "+key); } 运行代码后,我得到的输出为: user

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

for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){

    String key = (String)en.nextElement();
    System.out.println("Property name is "+key);
}
运行代码后,我得到的输出为:

username password Parent Child
如果属性名包含空格,则只返回第一个单词


有谁能告诉我怎么做吗?

它似乎对我很管用;这是我的密码:

   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<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){
       String key = (String)en.nextElement();
       System.out.println("'" + key + "'='" + prop.getProperty(key) + "'");
   }

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

您可以在属性文件中转义空格,但我认为它将开始看起来非常难看

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

为了避免将来出现任何错误和/或麻烦,您最好使用或根据自己的意愿编写自己的实现。

Java.util.Properties
中,
=
或空白字符是从属性文件加载时的键/值分隔符

下面是其
公共无效加载(读卡器)

该键包含行中的所有字符,从第一个非空格字符开始,到第一个未转义的
=
,或除行终止符以外的空格字符,但不包括这些字符。所有这些键终止字符都可以通过使用前面的反斜杠字符转义而包含在键中

我就是这样做的:

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", "`") + "|");
此方法适用于前导、内部和尾随空间。
享受吧

你可以自己读这个文件,凌乱的,但是它会解决属性如何转换每一行的问题谢谢,我正在尝试使用文件读取器读取属性文件,并使用regex进行拆分。java.util.Properties.load()方法有一些内置的分隔符,包括=,空格,:如果要在属性名称中使用其中任何一个,则需要使用\字符对其进行转义。不幸的是,javadocs并没有真正提到这一点,但是apachecommons配置中的文档虽然没有明确说明此方法,但确实应用了(至少在属性/值分隔符方面)一个半随机添加:在使用属性文件时,要非常小心地避免在属性末尾出现意外的空白!虽然“=”周围的空白被忽略,但结尾的空白不会被忽略,并且可能会导致头发拉扯错误。但是您没有从属性文件中读取属性,而OP正是在该文件中遇到问题的。
settings = ` ⚙ Settings `
System.out.println("|" + PropHelper.getPropertyWithSpaces("settings", "`") + "|");