java - 需要在不更改java代码的情况下覆盖windows默认的file.separator

标签 java eclipse windows tomcat ftp

产品代码在 UNIX 上运行,但需要在 Windows 上运行本地 DEV。

当前代码从数据库获取 UNIX 格式的路径,然后使用 file.separator 在该路径上构建,它添加了窗口分隔符,导致 ftp 失败,因为目标路径格式不正确。例如:/incoming/ri-etl\DEV\Rulebooks/tate_rbid_1715_retest

/incoming/ri-etl from a DB setting

\DEV\Rulebooks 使用文件分隔符内置代码。

由于其他团队使用 MAC OS 开发,他们在本地看不到问题。试图在 Tomcat ARGSJAVA_OPTS 中使用 -DFile.Separator=\/(和其他变体)覆盖 path.separator >CATALINA OPTS 但没有成功。

我认为如果我可以强制使用 UNIX 格式,Windows 将接受它并且 FTP 将工作。 FTP 不接受全部构建为 WINDOWS 格式的路径。

我正在 ECLIPSE(TOMCAT 8、Java 7、Eclipse MARS)中运行 TOMCAT

有什么想法吗?

最佳答案

Apache Commons 在这里派上用场:

FileNameUtils.separatorsToSystem() 将执行您正在寻找的操作。

public static void main(String[] args) throws Exception {

        System.out.println(FilenameUtils.separatorsToSystem("/incoming/ri-etl\\DEV\\Rulebooks/tate_rbid_1715_retest"));

}

输出(在 mac 上):将 反斜杠 转换为 正斜杠

/incoming/ri-etl/DEV/Rulebooks/tate_rbid_1715_retest

关于java - 需要在不更改java代码的情况下覆盖windows默认的file.separator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346235/

相关文章:

C++ USB 编程

java - Android 推荐跟踪不适用于 Google Play

java - 无法从 bean 中找到组件

java - 为什么正则表达式 [^-?0-9]+ 忽略 '?' ?

java - 如何在gradle中导入外部依赖?

c - Eclipse 中不兼容指针类型的赋值

java - 为什么 DrJava 返回静态错误?

java - JMH 找不到资源 :/META-INF/BenchmarkList

winforms - 发布Windows窗体应用程序如何更改安装路径

windows - Raspberry Pi3B 上的 headless SSH : connection refused