`

IO-概念、流细节

 
阅读更多

流:就是用于读写数据的,在Java程序中,对于数据的输入、输出操作都是以流(stream)的方式进行。


IO流分类:

按处理数据的单位分为:字节流、字符流

按数据流的方向分为:输入流、输出流

按功能分为:节点流、处理流


节点流:可以从一个特定的数据源(节点)读写数据,如文件、内存

处理流:连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。


FileReader:read()读取一个字符就返回,read(char[])可以将每次读取的数据缓存到char数组中,当char数组中数据写满时再返回

BufferedReader:内部封装了一个长度为8192的char数组用做缓冲区,将每次从底层流读取的数据写入缓冲区,在调用read()、read(char[])、readLine()方法时,实际上是从内部的缓冲区中获取数据。

注:使用BufferedReader读取数据时,它会先判断内部缓冲区是否有数据,如果没有,则先往缓冲区填充数据,再从中取出数据并返回。


 

FileWriter:内部封装了一个长度为1024的char数组用做缓冲区,当缓冲区写满数据时,才往硬盘上写数据。

BufferedWriter:内部封装了一个长度为8192的char数组用做缓冲区,当缓冲区写满数据时,才往底层流写数据。

注:当调用wite(char[])方法时,如果参数的长度大于了其内部缓冲区的长度,则会直接调用底层流。

 


FileInputStream:read()读取数据时调用本地方法(native)并直接将数据返回,read(byte[])可以将每次读取的数据缓冲到byte数组中,当byte数组中的数据写满时再返回,read(byte[])也是本地方法。有时读取到的一个字节可能是-1,但是文件并没有读取到结尾,为了避免错误的返回-1,在读取到一个字节时,将其提升为int类型(int intResult = byteResult&0xff),前面3个8位补0,而使用write()方法写数据时,又会将这个int类型的数字强转为byte类型,这样就得到了数据的原始状态。

BufferedInputStream:内部封装了一个长度为8192的byte数组用做缓冲区,将每次从底层流读取的数据写入缓冲区,在调用read()、read(byte[])方法时,实际上是从内部的缓冲区中获取数据。

注:使用BufferedInputStream读取数据时,它会先判断内部缓冲区是否有数据,如果没有,则先往缓冲区填充数据,再从中取出数据并返回。


FileOutputStream:内部没有封装缓冲区,直接调用本地方法将数据写到目的地,所以它的flush()方法是空实现。

BufferedOutputStream:内部封装了一个长度为8192的byte数组用做缓冲区,当缓冲区写满数据时,才往底层流写数据。

注:当调用wite(byte[])方法时,如果参数的长度大于了其内部缓冲区的长度,则会直接调用底层流。


装饰设计模式:当想要对已有对象进行功能增强时,可以定义了一个类,将想要增强的对象传入构造器,在已有功能的基础上,提供增强的功能。这个自定义的类就称为装饰类。


分享到:
评论

相关推荐

    开发工具 commons-io-1.3.2

    开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2...

    commons-io-2.11.0-API文档-中文版.zip

    赠送jar包:commons-io-2.11.0.jar; 赠送原API文档:commons-io-2.11.0-javadoc.jar; 赠送源代码:commons-io-2.11.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.11.0.pom; 包含翻译后的API文档:...

    commons-io-2.8.0-API文档-中英对照版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    [confluence插件] drawio-confluence-plugin-11.2.5.ocr

    drawio-confluence-plugin-11.2.5 drawio-confluence-plugin-11.2.5 drawio-confluence-plugin-11.2.5 drawio-confluence-plugin-11.2.5 drawio-confluence-plugin-11.2.5 drawio-confluence-plugin-11.2.5 drawio-...

    commons-io-2.5-API文档-中文版.zip

    赠送jar包:commons-io-2.5.jar; 赠送原API文档:commons-io-2.5-javadoc.jar; 赠送源代码:commons-io-2.5-sources.jar; 赠送Maven依赖信息文件:commons-io-2.5.pom; 包含翻译后的API文档:commons-io-2.5-...

    commons-io-1.3.2-API文档-中文版.zip

    赠送jar包:commons-io-1.3.2.jar; 赠送原API文档:commons-io-1.3.2-javadoc.jar; 赠送源代码:commons-io-1.3.2-sources.jar; 赠送Maven依赖信息文件:commons-io-1.3.2.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.7-API文档-中文版.zip

    赠送jar包:commons-io-2.7.jar; 赠送原API文档:commons-io-2.7-javadoc.jar; 赠送源代码:commons-io-2.7-sources.jar; 赠送Maven依赖信息文件:commons-io-2.7.pom; 包含翻译后的API文档:commons-io-2.7-...

    Java IO框架 commons-io-2.11.0

    Java IO框架 commons-io-2.11.0

    IO-Link IOL-Interface-Spec_10002_V113_Jun19.pdf

    IO-Link协议规范,V1.1.3最新标准;IO-Link Interface and System Specification V1.1.3; IO-Link 技术是 IEC 61131-9标准的一部分,本文档即此标准的第9部分; 可依据此规范编写IO-link协议栈代码; This part of ...

    commons-io-2.0.1大全

    Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,包含了最新的commons-io-2.0.1-bin,commons-io-2.0.1-src,commons-io-2.0.1-doc

    commons-io-1.4-API文档-中文版.zip

    赠送jar包:commons-io-1.4.jar; 赠送原API文档:commons-io-1.4-javadoc.jar; 赠送源代码:commons-io-1.4-sources.jar; 赠送Maven依赖信息文件:commons-io-1.4.pom; 包含翻译后的API文档:commons-io-1.4-...

    commons-io-2.4-API文档-中文版.zip

    赠送jar包:commons-io-2.4.jar; 赠送原API文档:commons-io-2.4-javadoc.jar; 赠送源代码:commons-io-2.4-sources.jar; 赠送Maven依赖信息文件:commons-io-2.4.pom; 包含翻译后的API文档:commons-io-2.4-...

    platformio.platformio-ide-2.4.3

    platformio.platformio-ide-2.4.3

    commons-io-2.6.jar下载

    commons-io-2.6.jar下载

    commons-io-2.11.0.jar

    commons-io-2.11.0.jar

    commons-io-2.1.jar

    commons-io-2.1.jar

    commons-io-2.8.0-API文档-中文版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.2-API文档-中英对照版.zip

    赠送jar包:commons-io-2.2.jar 赠送原API文档:commons-io-2.2-javadoc.jar 赠送源代码:commons-io-2.2-sources.jar 包含翻译后的API文档:commons-io-2.2-javadoc-API文档-中文(简体)-英语-对照版.zip 对应...

    common-io-3.1.1-API文档-中英对照版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    基恩士下IO-Link配置方式.zip_IO-link_io link_基恩士 iolink_基恩士IO—LINK_基恩士远程I

    基恩士PLC下配置IO-Link的方式,包含具体的操作方式

Global site tag (gtag.js) - Google Analytics