URL 无法打开文件:\C 文件路径 Java

URL wont open file:\C filepath in Java

我需要使用 URL(java.net.URL) 打开文件名,如下所示:

file:/C:/RAdev/Basic/src/test/resources/xml Data/test dir/app-config-seed-data.xml

我有以下 java 代码可以阅读

                fileURL = new File(filePath).toURI().toURL();
                is = fileURL.openStream();

因为 windows 可以访问文件:\,即使 URL 也应该可以打开相同的文件。

目前使用的解决方法:

            public static final String FILE_URL_PREFIX = "file:";
            if (filePath.contains(FILE_URL_PREFIX)) {
                filePath = filePath.replaceAll("file:/", ""); 
                System.out.println("Modified filepath - " + filePath);
            }
            fileURL = new File(filePath).toURI().toURL();
            is = fileURL.openStream();

是否需要上述解决方法,请让我知道是否有其他方法可以获得 URL 访问的好处。我是 java 中 URL/URI 的新手,非常感谢帮助。

谢谢。

file:/C:/ 不是有效文件 url。尝试用 file://C:/.

开始你的 URL

此外,File(String) 构造函数不采用 URL,它采用本地文件路径。如果您有一个 URL 作为要解析的字符串,请使用 URL(String) 构造函数:

URL fileURL = new URL("file://C:/RAdev/Basic/src/test/resources/xml Data/test dir/app-config-seed-data.xml");
is = fileURL.openStream();

在 Darth Android 建议的基础上添加以下实现:

URL url = new URL(filePath);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), 
    url.getPort(), url.getPath(), url.getQuery(), 
    url.getRef());
URL fileURL = uri.toURL();
InputStream is = fileURL.openStream();