【问题标题】:File separator Java. Is it determimed at compile or runtime?文件分隔符 Java。它是在编译还是运行时确定的?
【发布时间】:2014-11-30 21:39:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: java linux windows path


【解决方案1】:

它是在运行时确定的。

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

the OpenJDK 7 implementation 中,通过native 调用返回了FileSystem 实现。再次返回的值取决于本地环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多