如果在Windows上运行此代码,为什么b
不等于true
?
System.setProperty("line.separator", "\n");
String s=String.format("%n");
boolean b="\n".equals(s);
即使在Windows上,我希望s
为"\n"
而非"\r\n"
。
答案 0 :(得分:5)
不幸的是,这里唯一的方法是反思:
Field lineSeparator = System.class.getDeclaredField("lineSeparator");
lineSeparator.setAccessible(true);
lineSeparator.set(null, "\n");
答案 1 :(得分:3)
问题是,lineSeparator
是在System
类中定义和初始化的。
在致电System.setPropety()
之前,System
课程已经初始化,lineSeparator
此时已初始化为系统属性。它以后不会改变。
您必须在命令行选项...
上传递系统属性或者,可以使用反射来强制更改System.lineSeparator
字段。这不能保证有效。