URL中带有http或https的文件对象

时间:2019-01-04 14:06:30

标签: java file url

可以从URL获取File对象吗?我尝试类似

URL url = new URL(urlString);
File file = Paths.get(url.toURI()).toFile();

但它获得了异常

java.nio.file.FileSystemNotFoundException: Provider "http" not installed

或https ...取决于所使用的协议。假设urlString包含有效地址。

是否存在一种替代方法,可以从URL获得File对象,或者我走错路了?

2 个答案:

答案 0 :(得分:0)

您需要打开与URL的连接,开始获取服务器发送给您的字节,并将其保存到文件中。

使用Java NIO

URL website = new URL("http://www.website.com/information.asp");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

使用Apache Common IO

另一种方法是使用apache common io库,您可以这样做:

URL url = new URL(urlString);
File file = new File("filename.html");
FileUtils.copyURLToFile(url, file);

答案 1 :(得分:0)

在将其传递给Paths.get()之前,尝试使用URI.getPath()

URL url = new URL(urlString);
File file = Paths.get(url.toURI().getPath()).toFile();