哈喽,大家好,我是指北君,今天我们来讲一讲java中的IO流与Guava。,日常系统交互中,文件的上传下载都是常见的,一般我们会通过jdk提供的IO操作库帮助我们实现。IO指的是数据相对当前操作程序的入与出,将数据通过 输出流从程序输出,或者通过输入流将数据(从文件、网络、数据等)写入到程序,这里的IO指的是基于流作为载体进行数据传输。如果把数据比作合理的水,河就是IO流,也是数据的载体。,Java为我们提供了非常多的操作IO的接口与类,帮助开发者实现不同源间的数据传输,比如硬盘文件、网络传输、应用调用间的数据交互与传递。今天我们来简单了解下Java中的流 以及在Guava工具包中,针对IO操作做了什么样的封装与设计。,在java.io包中有非常多的IO相关接口,我们可以根据流的输出类型、处理对象以及功能将其分为以下几种类型:,输入流 (java.io.InputStream)用于实现将数据读入到程序,输出流 (java.io.OutputStream)用于实现将数据从程序写出,字节流以字节(byte)为单位进行数据的读、写 (其中针对文件也提供了按基础数据类型的读与写DataInpoutStream,也就是按照Java基础类型所占字节数来进行定量字节读取并合并),字符流以字符(char)为单位进行数据的读、写,此时需要注意字符编码,区分:,字节流一般以Stream结尾 字符流一般以Reader或Writer结尾,读 (java.io.Reader)主要针对字符流的读取操作,写 (java.io.Writer)主要针对字符流的写出操作,缓存流按字节进行数据读写时,通过缓冲批量写入来提高传输效率,转换流实现输入/出与读/写方式间的转换,可见,提供的IO对象基本都是成对出现的,用以完成数据的输入输出,实现程序与外部载体间的数据交换,下面我们通过一些常用示例来看看IO的使用的场景与使用方法:,关于流的操作非常多,像包括网络通信中、音视频文件处理、流合并等等,关于IO的内容并不复杂,上面的那些例子在很多工具库中基本都会提供对应的API方便开发者调用,今天主要看下Guava IO模块针对流的操作提供了什么样的 封装,Files,提供对文件快捷读写方法 其中主要提供了ByteSource、ByteSink、CharSource、CharSink 4个类,分别对应按字节的读写与按字符的读写,,管道流,PipedOutputStream PipedInputStream 实现多线程间的数据通信;类似生产消费者模式,在任何编程语言中,数据的IO都是比较常见并相当重要的。Guava作为工具型类库,主要是帮助开发者封装常用、重复的操作,开放出简介的API,不仅能让让代码更加整洁, 同时对开发出稳健程序也是比不可少的。
© 版权声明
文章版权归作者所有,未经允许请勿转载。