在以下情况下,Properties.load() 会跳过 InputStream 的第二行。这是 Java 的错误还是正常行为?
public class PropTest {
public static void main(String[] args) throws Exception {
propTest("Test1", "prop=cat,\\" + System.lineSeparator() + "dog");
propTest("Test2", "prop=cat,\\ " + System.lineSeparator() + "dog");
}
public static void propTest(String name, String test) throws Exception {
ByteArrayInputStream stream = new ByteArrayInputStream(test.getBytes());
Properties properties = new Properties();
properties.load(stream);
System.out.println(properties.get("prop"));
}
}
运行此代码会产生以下结果:
cat,dog
cat,
根据属性文件格式 https://docs.oracle.com/cd/E23095_01/Platform.93/ATGProgGuide/html/s0204propertiesfileformat01.html
如果每行都以反斜杠 (‘\’) 字符终止,则属性值可以跨越多行。
第二个版本中有一个尾随空格。所以这条线就不再继续了。请注意空格规则,这有点令人困惑。
属性名称和属性值之间出现的空格将被忽略,
and
行开头的空白也会被忽略。
因此,这意味着行末尾的空格不会被明确忽略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)