Java 如何从URL对象(图像)创建文件对象

Java 如何从URL对象(图像)创建文件对象,java,Java,我需要从URL对象创建一个文件对象 我的要求是 我需要创建一个网络图像的文件对象(比如谷歌的徽标) 为了从HTTP URL创建文件,您需要从该URL下载内容: URL url = new URL("http://www.google.ro/logos/2011/twain11-hp-bg.jpg"); URLConnection connection = url.openConnection(); InputStream in = connection.getInputStream(); Fil

我需要从URL对象创建一个文件对象 我的要求是 我需要创建一个网络图像的文件对象(比如谷歌的徽标)


为了从HTTP URL创建文件,您需要从该URL下载内容:

URL url = new URL("http://www.google.ro/logos/2011/twain11-hp-bg.jpg");
URLConnection connection = url.openConnection();
InputStream in = connection.getInputStream();
FileOutputStream fos = new FileOutputStream(new File("downloaded.jpg"));
byte[] buf = new byte[512];
while (true) {
    int len = in.read(buf);
    if (len == -1) {
        break;
    }
    fos.write(buf, 0, len);
}
in.close();
fos.flush();
fos.close();
下载的文件将在项目的根目录下找到:{project}/download.jpg

使用:

该方法下载
url
的内容,并将其保存到
f

,您可以利用该方法从url加载图像,然后将其写入文件。大概是这样的:

URL url = new URL("http://google.com/pathtoaimage.jpg");
BufferedImage img = ImageIO.read(url);
File file = new File("downloaded.jpg");
ImageIO.write(img, "jpg", file);

这还允许您在需要时将图像转换为其他格式。

您可以将
URL
转换为
字符串
,并使用它创建新的
文件
。e、 g

URL url = new URL("http://google.com/pathtoaimage.jpg");
File f = new File(url.getFile());
自Java7以来

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


你能详细说明一下吗?你想达到什么目的?我还建议你看看并检查它是否适合你。他们是否有办法从BuffereImage创建文件对象,而不将其写入磁盘。根据定义,文件需要存储在某个文件系统上。您需要一些内存中的文件系统,以便最终得到一个未持久化的文件。您注意到接受的答案了吗?我不知道FileUitls是否为此创建了一个临时文件:我觉得您的需求需要重新考虑。。。也就是说,假设您需要调用类似于
processImage(文件f)
的方法,则应该将其更改为
processImage(BufferedImage img)
processImage(InputStream is)
。这些更改中的任何一项都可以节省您在本地FS上存储外部图像的时间。关于可接受的答案,
FileUtils
需要一个
File
实例(您可能已经注意到),与
ImageIO
API相同。如果您选择创建一个临时文件,该文件仍将被持久化,但会在JVM退出时删除(和/或在系统tmp目录中创建)。所以从这个角度来看,这两个答案是完全相同的p这对我有用:
URL=newurl(“http://www.mydomain.com/pathToFile/fileName.pdf"); 字符串tDir=System.getProperty(“java.io.tmpdir”);字符串路径=tDir+“tmp”+“.pdf”;文件=新文件(路径);deleteOnExit()文件;copyUrltFile(url,文件)
@AdrienBe
FileUtils
在Eclipse中获取一个错误,它没有显示导入。
import org.apache.commons.io.FileUtils
应该完成这项工作,请参阅answerAnd
org.apache.commons.io.FileUtils.toFile中的库链接(URL)
如果我们只想将
URL
转换为
文件
。注意:将
实现'commons io:commons io:2.6'
添加到gradle dependencies block当对在完整路径中有空格的本地文件系统文件使用此方法时,%20不会自动转换为空格,并且可能导致异常URL.getFile附加查询(例如,a=b&c=d)(如果有)。通常没有争议,因为通常没有疑问。但是,为了只获取文件,应该使用url.getPath(),getFile或getPath都不能正确解码,因此上面的Paths.get()方法更可取,对不起,我无意中误读了您文章中的代码,并对其进行了否决,因为(我认为)它与
java.net.url
docs不匹配。如果你编辑你的帖子,我可以删除我的否决票。如果您这样做,请告诉我。修复了,我可以自己编辑它并删除下一票。这是为了检索文件位置,以
文件://
协议为例,不确定OP是否需要该位置或下载图像本身,但无论如何,这是我个人想要的。感谢如果URL中有空格,则会导致URI语法异常,如果URL使用
文件://
协议,则可能会出现这种情况。空格应替换为:
%20
URL url = new URL("http://google.com/pathtoaimage.jpg");
File f = new File(url.getFile());
File file = Paths.get(url.toURI()).toFile();