我的任务是将编写为在 Windows 下运行的代码转换为在 Linux 下运行。
我要解决的第一个问题是未使用 File.separator。相反,有一堆使用 Windows 文件分隔符 \
的硬编码 Sring。
我是通过VirtualMachine在Linux环境下运行java代码,有点慢。
为了让我的生活更轻松,我只是在 Windows 下编译我的代码(编译整个代码大约需要 1 小时),并将类文件粘贴到 Linux 环境中。
所以我的问题是,File.separator 是在运行时还是编译时确定的,因为我仍然面临与路径相同的问题?
最佳答案
它是在运行时确定的。
在the OpenJDK 8 implementation ,File#separator
将通过 DefaultFileSystem#getFileSystem()
返回的 FileSystem
进行初始化。此类将由 JRE 提供。它会根据 Windows 或 Linux 安装为您提供不同的值。
在the OpenJDK 7 implementation , FileSystem
实现通过 native
调用返回。再次返回的值取决于本地环境。
关于java - 文件分隔符 Java。它是在编译时还是在运行时确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219438/