对于src路径问题,深层理解的实践。且对于输出流write()两个方法的源码阅读。

根据昨天的总结,可深层理解图片中src的路径。所以今天实现了一个想法。就是路径写入的是Controller,然后自动去本地找。

其实就是将电脑的本地图片 显示出来。通过输出流的方式。

代码如下:

@RequestMapping(value = "/img/{id}")
    public void img(@PathVariable(value = "id") String id,HttpServletResponse response) {
        File file = new File("D:\\img\\" + id + ".jpg");
        System.out.println(file);
        try {
            InputStream inputStream = new FileInputStream(file);
            OutputStream outputStream = response.getOutputStream();
            byte[] b = new byte[1024];
            int a = -1;
            while ((a = inputStream.read(b)) != -1) {
                outputStream.write(b);
                System.out.println(a);
            }
            response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode("a.jpg", "UTF-8"));
            inputStream.close();
            outputStream.flush();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

可是无法正常显示。发现打开的文件图片大小为1kb,实际图片为43kb。

最后发现了是输出流写的过程中,发生的错误。其实,就是方法的问题。

换成outputStream.write(b,0,a);就好了

所以接下来,我去读一下write(Byte[]),和write(Byte[],0,length)两个方法的区别。

  • write(byte b[])

public void write(byte b[]) throws IOException {
        write(b, 0, b.length);
    }

所以可以看到,此方法内部调用的 write(b, 0, b.length);

可突然发现,重新用回write(byte b[])方法,依然好用。那我之前是见鬼了么???

[○?`Д′? ○]

原文地址:https://www.cnblogs.com/miaoww/p/8569479.html

时间: 2024-10-06 08:43:51

对于src路径问题,深层理解的实践。且对于输出流write()两个方法的源码阅读。的相关文章

JDK部分源码阅读与理解

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/JDK部分源码阅读与理解/ 不喜欢重复造轮子,不喜欢贴各种东西.JDK代码什么的,让整篇文章很乱...JDK源码谁都有,没什么好贴的...如果你没看过JDK源码,建议打开Eclipse边看源码边看这篇文章,看过的可以把这篇文章当成是知识点备忘录... JDK容器类中有大量的空指针.数组越界.状态异常等异常处理,这些不是重点,我们关注的应该是它的一些底层的具体实现,这篇

[译] 理解PHP内部函数的定义(给PHP开发者的PHP源码-第二部分)

文章来自:http://www.aintnot.com/2016/02/10/understanding-phps-internal-function-definitions-ch 原文:https://nikic.github.io/2012/03/16/Understanding-PHPs-internal-function-definitions.html 欢迎来到"给PHP开发者的PHP源码"系列的第二部分. 在上一篇中,ircmaxell说明了你可以在哪里找到PHP的源码,它

winserver的consul部署实践与.net core客户端使用(附demo源码)

前言 随着微服务兴起,服务的管理显得极其重要.都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构.迭代.交付.随着微服务的数量增多,因量变引起了质量,带来新的问题其中一个是服务的管理问题.随着业务发展微服务增多,可能技术负责人也无法清楚记着服务的部署情况,服务的健康也不能时刻关注着,因此服务治理系统的作用必不可少. 本篇文章的源码: demo:https://github.com/SkyChenSky/Consul.Demo 封装:https://git

Android中图片加载框架Glide解析2----从源码的角度理解Glide的执行流程

转载地址:http://blog.csdn.net/guolin_blog/article/details/53939176 在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 . 在多数情况下,我们想要在界面上加载并展示一张图片只需要一行代码就能实现,如下所示: Glide.with(this).load(url).into(i

Android 源码系列之<十四>从源码的角度深入理解LeakCanary的内存泄露检测机制(下)

转载请注明出处:http://blog.csdn.net/llew2011/article/details/52958567 在上边文章Android 源码系列之<十三>从源码的角度深入理解LeakCanary的内存泄露检测机制(中)由于篇幅原因仅仅向小伙伴们讲述了在Android开发中如何使用LeakCanary来检测应用中出现的内存泄露,并简单的介绍了LeakCanary的相关配置信息.根据上篇文章的介绍我们知道LeakCanary为了不给APP进程造成影响所以新开启了一个进程,在新开启的

Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新. 在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 . 在多数情况下,我们想要在界面上加载并展示一

.NET Core 3.0之深入源码理解Configuration(二)

原文:.NET Core 3.0之深入源码理解Configuration(二) 文件型配置基本内容 上一篇文章讨论了Configuration的几个核心对象,本文继续讨论Configuration中关于文件型配置的相关内容.相比较而言,文件型配置的使用场景更加广泛,用户自定义配置扩展也可以基于文件型配置进行扩展.如果需要查看上一篇文章,可以点击移步. .NET Core文件型配置中我们提供了三种主要的实现,分别是JSON.XML.INI,请查看下图 由图可知,这三种配置的实现方式是一样的,当然了

Android异步消息处理机制完全解析,带你从源码的角度彻底理解

转载于:http://blog.csdn.net/guolin_blog/article/details/9991569 之前也是由于周末通宵看TI3比赛,一直没找到时间写博客,导致已经有好久没更新了.惭愧!后面还会恢复进度,尽量保证每周都写吧.这里也是先恭喜一下来自瑞典的Alliance战队夺得了TI3的冠军,希望明年中国战队能够虎起! 开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃.相信大家在日常的工作当中都会经常遇到这个问题

深入理解JAVA集合系列四:ArrayList源码解读

在开始本章内容之前,这里先简单介绍下List的相关内容. List的简单介绍 有序的collection,用户可以对列表中每个元素的插入位置进行精确的控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素.列表通常允许重复的元素,且允许null元素的存放. ArrayList的简单介绍 JDK中这样定义ArrayList:List接口的大小可变数据的实现. 主要有以下特点: 1.有序 2.线程不安全 3.元素可以重复 4.可以存放null值 顾名思义,取名ArrayLis