【问题标题】:Get normalized path for windows location in Java获取Java中Windows位置的规范化路径
【发布时间】:2022-01-31 16:31:22
【问题描述】:

我有一个要求,我的路径为C:\..\bar 为此,当我在 SQL Server 中使用此路径时,会在 C 驱动器中创建文件栏。 现在在使用 Apache 的 FilenameUtils 时,normalize 方法返回 null,如文档所述。

  • C:\..\bar --> null

但我想要

C:\bar 为 C:\..\bar

在 Java 中有什么方法可以为 C:\..\bar 获取 C:\bar 我知道.. 表示父目录,但 SQL Server 仍会在 C 盘创建文件。

使用 File 或 Path 类的问题在于它们使用了底层文件系统,在我的例子中是 Unix,但我将获得的路径将是 windows 绝对路径。 因此,无论文件系统如何,基本上都希望摆脱点和斜线等任何冗余。

【问题讨论】:

    标签: java sql-server apache-commons


    【解决方案1】:

    您可以使用getCanonicalFile

    import java.io.File;
    import java.io.IOException;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            File file = new File("C:\\..\\bar");
            System.out.println(file.getCanonicalPath());
        }
    }
    

    【讨论】:

    • 任何其他方式都会更好,因为通常 File 对象用于对文件进行操作,而在这种情况下,我只想使用文件路径并确保不会发生与文件相关的操作。
    • 您可以使用getCanonicalPath,它将返回字符串(如刚才编辑的那样)。获取规范路径是与文件相关的操作,如果您不想这样做,则需要进行字符串操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多