首页 > 代码库 > Java 使用InputStream笔记
Java 使用InputStream笔记
当我们要从网络下载资源时,使用类似如下方法来获取InputStream实例:
URLConnection connection = new URL("http://www.XXXX.XXX").openConnection(); InputStream inputStream = connection.getInputStream();
但是这个InputStream实例与我们读取文件的InputStream实例有一些不同之处。
先说一下使用InputStream读取文件
InputStream inputStream = new FileInputStream(new File("XXX"));
我们可以通过inputStream.available()来获取文件的字节数
使用inputStream.read(byte[] b, int off, int len)来尝试读取len个字节到字节数组b中,如果输入流中的字节大于len,则读取len个数组,如果输入流中的字节数小于len,则读取剩余的字节个数,并最终返回读取的字节数,读取到文件结尾的时候会返回-1。
但是对于connection.getInputStream()方法获取的输入流,则以上两个方法就不适用了:
available()方法获取到的字节数会与输入流中的总字节数相差很大,如果要获取网络资源的具体字节数,就要使用connection.getContentLength()方法获取。
而inputStream.read(byte[] b, int off, int len)方法,在字节数组b长度和len很大的时候,会出现读取不全的情况,即输入流中的字节数大于len个,但是读取出来的字节数仍小于len个的情况。所以这种情况就必须使用while循环读取,通过返回值来确定读取的字节数(读取文件的时候最好也这么做)
while ((length = inputStream.read(data, 0, data.length)) != -1) { XXXX }
Java 使用InputStream笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。