需要覆盖windows default file.separator而不更改java代码

时间:2016-04-01 00:48:10

标签: java eclipse windows tomcat ftp

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 for Dev,他们在本地看不到问题。试图在 Tomcat ARGS JAVA_OPTS CATALINA OPTS 中使用-DFile.Separator=\/(以及其他变体)过度使用path.separator成功。

我认为如果我可以强制UNIX格式,Windows将接受它并且FTP将起作用。 FTP不会接受所有以WINDOWS格式构建的路径。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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上):将反斜杠转换为 forwardslash

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