【问题标题】:Need to override windows default file.separator without changing java code需要覆盖windows默认file.separator而不改变java代码
【发布时间】:2016-04-01 00:48:10
【问题描述】:

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

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

/incoming/ri-etl from a DB setting

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: java eclipse windows tomcat ftp


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢,但我无法更改通用代码。我需要找到一种在代码库之外覆盖的方法。
    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多