文件分隔符Java。它是在编译或运行时确定的吗?

时间:2014-10-06 15:19:56

标签: java linux windows path

我的任务是将在Windows下运行的代码转换为在Linux下运行。

我想解决的第一个问题是没有使用File.separator。相反,有一堆硬编码的Srings使用Windows文件分隔符\

我在Linux环境下通过VirtualMachine运行java代码,这有点慢。

为了让我的生活更轻松,我只是在Windows下编译了我的代码(编译整个代码需要大约1小时),并将类文件粘贴到Linux环境中。

所以我的问题是,File.separator是在运行时还是编译时确定的,因为我仍然面临与路径相同的问题?

1 个答案:

答案 0 :(得分:3)

在运行时确定。

the OpenJDK 8 implementation中,File#separator将通过FileSystem返回的DefaultFileSystem#getFileSystem()进行初始化。本课程将由JRE提供。它将根据Windows或Linux安装提供不同的值。

the OpenJDK 7 implementation中,通过FileSystem电话返回了native个实施。再次返回的值取决于本地环境。