zoukankan      html  css  js  c++  java
  • 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
    }
  • 相关阅读:
    LeetCode-20.Valid Parentheses
    LeetCode-2. Add Two Numbers
    LeetCode-1. Two Sum
    LeetCode Top100 Liked Questions
    位运算
    sublime中文乱码解决办法
    jQuery 参考手册
    jQuery 参考手册
    jQuery 参考手册
    《锋利的Jquery第二版》读书笔记 第三章
  • 原文地址:https://www.cnblogs.com/zawier/p/6539680.html
Copyright © 2011-2022 走看看