gpt4 book ai didi

java - URL编码、空格和特殊字符(例如: "+"). 如何正确管理文件路径?

转载 作者:行者123 更新时间:2023-12-02 11:10:59 25 4
gpt4 key购买 nike

我阅读了大量有关 Java 路径编码和管理文件路径的正确方法的 Stack Overflow 帖子(例如 this one )。不过,我真的不知道如何管理我的文件路径。

我想要实现的目标非常简单:以正确的方式编码我的 *.jar 文件路径,以便我可以将其用作 FileInputStream() 的输入:这样我可以加载属性文件它位于上述 *.jar 的同一文件夹中。

我读过 Java 文档,并且知道 URLDecoder 只是用空格转义特殊符号(如“+”),因此我无法真正了解必须使用哪些方法组合来获取到的绝对路径文件,即使它包含的文件夹(不是我的错)名称由空格和所述符号组成。这是我的方法:

private FileInputStream loadInputPropertiesFile() {
FileInputStream input = null;

// Let's load the properties file from the *.jar file parent folder.
File jarPath = new File(PropertiesManagement.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String propertiesPath = String.format("%s/", jarPath.getParentFile().getAbsolutePath());

propertiesPath = URLDecoder.decode(propertiesPath, StandardCharsets.UTF_8);

// This part has been added just for tests, to better understand how file paths were encoded.
try {
URL url = jarPath.toURI().toURL();
File path = Paths.get(url.toURI()).toFile();
System.out.println(path);
} catch (MalformedURLException | URISyntaxException e) {
e.printStackTrace();
}

try {
input = new FileInputStream(propertiesPath + CONFIG_FILE_PATH);
} catch (FileNotFoundException e) {
System.out.println("Properties file not found! Have you deleted it?");
e.printStackTrace();
}

return input;
}

编辑
我想获取的文件路径是这样的:“C:\Some + Folder\x64”。
最后,返回的输入应该是这样的:“C:\Some + Folder\x64\config.properties”。

最佳答案

您应该将父文件夹添加到类路径中,然后照常加载它:

//load a properties file from class path, inside static method
Properties prop = new Properties();
try(final InputStream stream =
Classname.class.getClassLoader().getResourceAsStream("foo.properties")) {
prop.load(stream);
}
// or load it within an instance
try(final InputStream stream =
this.getClass().getResourceAsStream("foo.properties")) {
prop.load(stream);
}

而不是“%s/”,最好使用“%s”+ File.separator,它总是为您提供独立于平台的分隔符。

关于java - URL编码、空格和特殊字符(例如: "+"). 如何正确管理文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com