file.exists在Windows和Linux上返回不同的结果

时间:2015-03-03 17:49:43

标签: java linux windows file

我知道在技术上附加文件名周围的空白是一个错误,但我想知道为什么以下代码在Windows上返回true,但在Linux上返回false:

public static void main(String[] args) {
    File file = new File("some_file_that_exists ");  // note the whitespace at the end
    System.out.println(file.exists());
}

我使用Windows 7 64位和jdk1.6.0_31,并在Linux 2.6.18上使用jdk1.6.0_06重试。请注意,该文件的名称末尾没有空格。

1 个答案:

答案 0 :(得分:1)

这应该是因为windows不允许空间结束,并且当java调用OS时,OS会删除/不考虑空格。

然而,linux允许空间结束,因此它会进行精确检查并尝试在文件名末尾找到带空格的文件。