URL不会打开文件:Java中的\ C文件路径

时间:2016-03-18 16:10:18

标签: java url path uri filepath

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

  

file:/ C:/ RAdev / Basic / src / test / resources / xml数据/测试   DIR / APP-CONFIG-种子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的新手,非常感谢帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

file:/C:/不是有效的文件网址。尝试使用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();

答案 1 :(得分:1)

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