`

commons-io之inputstream学习

阅读更多

ProxyInputStream类的学习


    这个类的设计意图不是特别明确,就是继承与JDK的FilterInputStream类的,但是在它的read(byte[] bytes)这个函数也是调用delegate的read(byte[])函数,父类的是直接调用的是read(byte[] bytes, int offset, int length)函数。

    这个类我们就可以理解成是调用封装的delete的InputStream吧。


AutoCloseInputStream类的学习


这个类的设计意图我们一看类名就比较明白,主要是自动关闭底层的InputStream流,就是每次在调用了read方法后都会判断是否关闭底层的InputStream流,就是把底层的InputStream设置成ClosedInputStream,这样对它的read方法的调用就不会抛出NPE异常了。

   public void close() throws IOException {
        in.close();
        in = new ClosedInputStream();
    }
 


    这个类的使用场景应该是在读取完毕的时候自动关闭流和释放底层的资源。


ClosedInputStream类的学习


     这个类其实我们只要看一下它的实现应该就全明白了,就是把read方法返回-1就可以了。

  public int read() {

        return -1;
    }
  


CloseShieldInputStream类的学习


这个类其实就是不然底层的InputStream被关闭,所以就重载了关闭方法。

下面再来看一下英文注释里面写的使用场景:

This class is typically used in cases where an input stream needs to be

passed to a component that wants to explicitly close the stream even if

more input would still be available to other components.


CountingInputStream类的学习


这个类其实从类名称上面也能看出来它的使用意图,就是来统计读取的字节数的。

这个我就不多讲了,因为read方法就可以返回实际读到的字节数,然后在该类里面保存一个

统计变量的话,就可以来统计读取的字节数。




DemuxInputStream类的学习

    这个类比较好理解,就是从当前ThreadLocal里面取得底层的InputStream进行读操作。这个类的使用场景也比较明确了,就是在某个实际给ThreadLocal里面放上合适的InputStream流,然后在调用这个类的read方法的时候,该类是从ThreadLocal里面取得相应的InputStream进行操作。


SwappedDataInputStream类的学习


    这个类实际上涉及到数据的转换功能,具体的看一下下面的注释吧。


    DataInput for systems relying on little endian data formats.

When read, values will be changed from little endian to big 

endian formats for internal usage. 


TeeInputStream类的学习


这个类太有意思了,实际上它完成的工作就是把读到的东西然后再写到底层包装的OutputStream里面去,感觉就像喝茶是的,抿一口茶,然后咽一口茶。其实这个类都没有特殊的,就是读后然后直接调用底层的OutputStream写数据,然后肯定我们还得有一个参数在指示到底要不要关闭OutputStream。


ClassLoaderObjectInputStream类的学习

这个类是继承ObjectInputStream的,在resolveClass函数里面会根据ObjectStreamClass类获得动态的进行加载class,所以在这个类的实现里面,在构造函数里面可以指定加载这个类所要使用的classloader。

分享到:
评论

相关推荐

    commons-io-1.4.jar.zip_io流jar

    《Java IO流详解与commons-io-1.4.jar库的应用》 在Java编程语言中,IO(Input/Output)流是一组用于数据传输的类,它们允许程序读取和写入数据,无论是从磁盘、网络还是其他输入输出设备。Java的IO流系统是一个...

    Java IO commons-io-2.5.jar

    Java IO 包含了许多类,如InputStream、OutputStream、Reader、Writer等,它们分别用于处理字节流和字符流。字节流适用于二进制数据,而字符流适用于文本数据。Java IO 还包括Filter流,可以用来装饰其他流,添加...

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库。它们为开发者提供了强大而灵活的工具,使得在Web应用中处理文件上传变得简单易行。 `commons-fileupload-1.2.1.jar`是Apache ...

    commons-fileupload组件和commons-io组件

    Apache Commons项目提供了两个非常实用的组件,即Commons-Fileupload和Commons-IO,来帮助开发者处理这一任务。这两个组件是Java Web开发中的重要工具,特别是对于初学者来说,它们简化了文件上传的复杂过程。 **...

    commons-io-2.8.0-bin.zip

    对于Java学习者,深入理解和熟练使用Apache Commons IO库是提升编程技能的关键步骤之一。通过这个"commons-io-2.8.0"的jar包,你可以直接引入到项目中,利用这些功能强大的工具进行更高效、更可靠的IO操作。

    commons-io-2.4

    Apache Commons IO 是一个Java库,专注于提供各种I/O操作的实用工具类,版本号为2.4。这个库包含了大量方便、高效的类和方法,帮助开发者处理输入/输出流、文件、字符集、序列化等问题,极大地简化了日常的IO编程...

    commons-io-1.3.2.jar

    Apache Commons IO是很多Maven插件的依赖之一,因为插件在处理源代码、资源文件和构建输出时,需要进行各种I/O操作。 在Maven项目中,添加Apache Commons IO作为依赖,可以通过以下方式在pom.xml文件中声明: ```...

    commons-io-2.2.jar

    Apache Commons IO库是Java开发中一个非常重要的工具包,它为Java的IO操作提供了大量实用且功能丰富的类和方法。这个库的版本"commons-io-2.2.jar"包含了从低级到高级的各种IO操作的支持,极大地简化了开发者的代码...

    commons-io-commons-codec JAR包

    Commons IO和Commons Codec是Apache软件基金会开发的两个非常重要的Java库,它们为开发者提供了大量实用的工具类和方法,极大地简化了IO流操作和编码解码任务。这两个库广泛应用于各种Java项目中,尤其在处理输入/...

    commons-io-1.4.rar_commons io_commons-io-1.4_commons-io-1.4.jar

    2. **流操作**:IO组件的核心在于对流的处理,如`InputStream`和`OutputStream`。`StreamUtils`和`IOUtils`提供了一些便捷的方法,如`copy()`方法可以方便地在不同类型的流之间进行数据复制。 3. **缓冲区操作**:`...

    commons-io.jar

    Apache Commons IO库是Java开发中一个非常重要的工具包,它为处理输入/输出操作提供了大量实用的类和方法。这个库包含在名为"commons-io.jar"的文件中,由著名的开源组织Apache Software Foundation开发和维护。这个...

    commons-io-1.4-源码跟jar

    Apache Commons IO 是一个Java库,提供了大量的实用工具类来处理输入/输出操作。"commons-io-1.4-源码跟jar" 提供了Apache Commons IO库的版本1.4的源代码和编译后的JAR文件。这个库是许多Java项目的基础,因为它...

    commons-io-2.3.jar

    2. **流处理**: InputStream和OutputStream的包装类,如BufferedInputStream和BufferedOutputStream,提高了IO流的性能。此外,还有转换流,如StringReader和StringWriter,使得数据可以在字符流和字符串之间轻松...

    commons-io-2.0.1

    Apache Commons IO 是一个Java库,专注于提供各种I/O(输入/输出)操作的实用工具类。这个库在软件开发中非常常见,特别是对于处理文件、流、字符转换、过滤、读写等各种IO任务时。标题"commons-io-2.0.1"指的是...

    commons-io使用笔记

    Apache Commons IO 是一个Java库,提供了大量的实用工具类来处理输入/输出操作。这个库包含了对文件、流、字符集、缓冲区、过滤器、读写操作等多种IO操作的支持,大大简化了Java的IO编程。在"commons-io使用笔记"中...

    commons-io-2.8.0-bin.tar.gz

    Commons IO 是一个非常重要的Java库,它为处理输入/输出操作提供了大量的实用工具类和方法。这个"commons-io-2.8.0-bin.tar.gz"文件是一个包含 Commons IO 库的压缩包,版本号为2.8.0,格式是tar.gz,这是一种常见的...

    commons-io-2.5-bin.zip

    Apache Commons IO 是一个Java库,专门用于处理输入/输出流操作。这个库包含了大量实用工具类,可以帮助开发者更高效地处理文件、字节流、字符流等IO操作。"commons-io-2.5-bin.zip"是Apache Commons IO库的二进制...

    源代码分析commons-io-2.0.1-src (二)

    通过深入学习Apache Commons IO的源代码,开发者不仅可以了解各种IO操作的最佳实践,还能学习到如何利用设计模式优化代码结构,提升代码的可读性和可维护性。对于想要提升Java IO编程技能的开发者来说,这是一个...

    IOUtils(commons-io-1.4.jar、commons-fileupload-1.2.1.jar等等)

    在给定的标题和描述中,重点提到了两个关键的Apache Commons库:`commons-io-1.4.jar`和`commons-fileupload-1.2.1.jar`。这些库在处理输入/输出(I/O)和文件上传方面提供了强大的支持。以下是这两个库及其核心类`...

Global site tag (gtag.js) - Google Analytics