繁体   English   中英

Java Linux 环境的 Windows 中的路径

[英]Java Paths in Windows for Linux environment

我正在 Windows 开发,在流程中的某个地方我必须访问 sftp (Linux) 服务器。 我做了一些逻辑来准备我必须从 sftp 服务器复制的文件名,并且我需要生成完整路径,因此我在代码中编写了这一行:

Paths.get(configuration.getSftpServerConfiguration().getRemotePath(), filename).toString();

因为我在 Windows 上运行,所以使用 Windows 斜杠生成的路径,例如\public\directory\filename.csv

我可以定义使用 Linux 分隔符的路径吗? (我知道我可以自己连接“/”,但看起来我是一种不好的做法..)

检查这篇文章: 是否有 Java 实用程序可以将字符串路径转换为使用正确的文件分隔符字符?

基本上Apache CommonsFilenameUtils.separatorsToSystem(String path)将有助于实现您想要做的事情。

如果您不想导入整个依赖项,则该方法将执行以下操作:

String separatorsToSystem(String res) {
    if (res==null) return null;
    if (File.separatorChar=='\\') {
        // From Windows to Linux/Mac
        return res.replace('/', File.separatorChar);
    } else {
        // From Linux/Mac to Windows
        return res.replace('\\', File.separatorChar);
    }
}

更新:正如@Slaw 所说,这个解决方案仍然依赖于平台。 您可以修改该方法以采用额外的参数,并决定是否需要“Unix”或“Windows”中的 output 字符串,如下所示:

String changeFileSeparators(String res, boolean toUnix) {
    if (res==null) return null;
    if (toUnix) {
        // From Windows to Linux/Mac
        return res.replace('\\', '/');
    } else {
        // From Linux/Mac to Windows
        return res.replace('/', '\\');
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM