首页 > 解决方案 > 在Java中创建路径的速记?

问题描述

我有一个代码示例,它创建这样的路径:

    String path = System.getProperty("user.dir") + File.separator + "games" + File.separator + "game.exe";

File.separator重复打字很烦人,很难。有没有更短的方法来创建路径?我创建了一个自定义函数来做到这一点,但我不确定它是否是正确的方法。请指教。

//Ex. getPath("downloads", "games", "racing.exe") ---> \downloads\games\racing.exe
public static String getPath(String...pathFragments){
    StringBuilder sb = new StringBuilder(File.separator);

    for(int i = 0; i < pathFragments.length-1; i++){
        sb.append(pathFragments[i] + File.separator);
    }

    //Append last pathFragment.
    sb.append(pathFragments[pathFragments.length-1]);

    return sb.toString();
}

标签: java

解决方案


第一个想法:你为什么要打扰File.separator?请改用跨平台系统独立文件分隔符/

String path = System.getProperty("user.dir") + "/games/game.exe";

for 的唯一用途File.separator是如果您正在为用户界面构建文件路径,并且想要向用户显示路径字符串,并且不想通过在路径中混合 / 和 \ 来混淆 Windows 用户。

第二个想法:除非您有令人信服的理由使用字符串,否则请使用Paths.get。令人信服的原因包括保持向后兼容 Java 或库的古老版本。

// You probably don't need to add System.getProperty("user.dir")
// Relative paths are resolved against current working directory
Path path = Paths.get("games/game.exe");

第三个想法:使用String.join而不是 StringBuilder.append

public static String getPath(String... pathFragments) {
    return File.separator + String.join(File.separator, pathFragments);
}

推荐阅读