IE盒子

搜索
查看: 112|回复: 1

I/O流实战应用精选:网络图片下载器——Java进阶系列(十一 ...

[复制链接]

4

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2022-12-28 12:26:49 | 显示全部楼层 |阅读模式


欢迎来到全网最完整的Java入门系列教程!!!
本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。建议跟着教程的节奏每天学习一点,你会发现入门Java没有想象中那么难。


经过前两期的分享,我们已经把IO文件读写的主要知识点讲完了,本期我们要结合实际实战一下,写一个图片下载器。
如果你正在学习Java,不妨收藏这篇文章,或者关注我,定期收获与Java有关的知识和项目信息!
想要了解Java基础部分的课程内容,可以看我的专栏->
老K玩代码:[专栏]Java基础知识讲义系列
<hr/>

学习了这么多,看看我们能用现有的知识做些什么!
我们要做一个综合的案例,利用I/O的类和URLConnection类,写一个网络资源下载程序。
示例为下载图片,图片如下:



示例图片

代码示例:
import java.io.*;
import java.net.URL;
import java.net.URLConnection;

public class IODemo {

    public static void main(String[] args) {

        // 声明stream输入输出类
        OutputStream os = null;
        InputStream is = null;

        try {
            // 生成URL类并建立连接
            URL url = new URL("https://pics3.baidu.com/feed/a6efce1b9d16fdfa222e01f32738f15c95ee7ba9.jpeg?token=12cb5d07cd9ce5f9a2954e0c669306a6");
            URLConnection conn = url.openConnection();
            is = conn.getInputStream();

            // 准备输出文件,开始读写
            File f = new File("io.jpg");
            os = new FileOutputStream(f);
            byte[] b = new byte[1024];
            int len = 0;
            while((len = is.read(b))!= -1) {
                os.write(b, 0 ,len);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            // 关闭对象
            try {
                os.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            try {
                is.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}说明:

  • URL是网络资源地址的类,传入的构造参数是目标资源网址,小伙伴可以根据需要更换不同的资源地址;
  • URL实体可以通过openConnection方法建立网络连接通道,返回值为URLConnection类;
  • 通过URLConnection的getInputStream方法,可以获取到目标资源的字节流数据,我们通过InputStream类进行接收;
  • 剩余部分的代码逻辑和OutputStream章节中的示例相似,不作展开说明了,详见之前的章节,传送按钮->。
<hr/>根据以上代码写一遍,你有没有成功获取到上述的图片资源呢?
如果有任何疑问或者遇到任何问题,可以在评论区给我留言或者私信我进行讨论。
本期的内容就分享到这里。
正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!


Java进阶知识前十课的内容,可点击下方获取:
老K玩代码:如何优雅的处理异常--Java进阶知识讲义系列(一)
老K玩代码:包装器类装箱与拆箱的艺术——Java进阶知识讲义系列(二)
老K玩代码:一文讲透Java字符串——Java进阶知识讲义系列(三)
老K玩代码:List的用法和实例详解——Java进阶知识讲义系列(四)
老K玩代码:Set的用法和实例详解——Java进阶知识讲义系列(五)
老K玩代码:Map的用法和实例详解——Java进阶知识讲义系列(六)
老K玩代码:常用集合的排序方法——Java进阶知识讲义系列(七)
老K玩代码:I/O流之File类的用法和实例详解——Java进阶知识讲义系列(八)
老K玩代码:I/O流之字节流的读写——Java进阶知识讲义系列(九)
老K玩代码:I/O流之字符流的读写——Java进阶知识讲义系列(十)
结束语

我是专注于开发领域的 @老K玩代码 ,会持续生产关于如何学习编程语言的优质内容。
如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。

回复

使用道具 举报

1

主题

6

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 昨天 06:45 | 显示全部楼层
我也是坐沙发的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表