File.separator在window下是"\",在linux下是"/"。
那么如果代码是在window下编译,在linux下运行会不会出异常?
不会啊,这样写就通用了。你可以看下jdk源码
[code="java"]
static private FileSystem fs = FileSystem.getFileSystem();
public static final char separatorChar = fs.getSeparator();
public static final String separator = "" + separatorChar;[/code]
可以看到,他会在运行期间根据不同平台获得不同的文件分隔符
我的代码在linux没有报错
File.separator是在运行时决定在,在哪个系统运行就是哪个系统的符号
显然不会,无论在哪个平台编译, File.separator的值都是在运行时决定的
File.separator
没有这个好
[code="java"]
String lineSeparator = (String) java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator"));
[/code]