java - 文件分隔符 Java。它是在编译时还是在运行时确定的?

标签 java linux windows path

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

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

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

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

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

最佳答案

它是在运行时确定的。

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

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

关于java - 文件分隔符 Java。它是在编译时还是在运行时确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219438/

相关文章:

java - 集合与其迭代器之间是否存在循环依赖?

java - Play Framework : Post image to imageshack using WS

linux - Bash 脚本 - 自动填写答案

Lazarus 中的 Windows 模拟 Apache 模块

.net - 如何捕获文件复制/移动事件的详细信息,例如源文件名

python - 你能用 Python 在 MS Windows 上将标准输入作为文件打开吗?

java - Scala 和 Java BigDecimal

java - 当我在 JPA 代码中设置锁时,它们是在代码中还是在 DBMS 中强制执行?

linux - 不可见的终端输出正在破坏脚本

linux - 了解 qemu-kvm