【问题标题】:URL wont open file:\C filepath in JavaURL 不会在 Java 中打开 file:\C 文件路径
【发布时间】:2016-07-05 11:46:05
【问题描述】:

我需要使用如下 URL(java.net.URL) 打开一个文件名:

file:/C:/RAdev/Basic/src/test/resources/xml 数据/test 目录/app-config-seed-data.xml

我有以下java代码要阅读

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

由于windows可以访问file:\,所以即使是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 的新手,非常感谢您的帮助。

谢谢。

【问题讨论】:

  • 在 Windows 中,这将是(注意双 // 在文件之后:) file://C:/RAdev/Basic/src/test/resources/xml Data/test dir/app-config- seed-data.xml 我没有要测试的 java 环境。路径规则一样吗?
  • 应用服务器访问文件系统为file:/C。是的,路径规则是一样的。

标签: java url path uri filepath


【解决方案1】:

file:/C:/ 不是有效的文件 URL。尝试以file://C:/ 开头您的网址。

此外,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();

【讨论】:

  • 在您的建议之上添加以下实现: URL url = new URL(filePath); URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());文件URL = uri.toURL(); is = fileURL.openStream();谢谢!
【解决方案2】:

在 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();

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多