J2SE 流

Java流式输入输出原理

输入流(InputStream):程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道。输入流不关心数据源来自何种设备(键盘,文件,网络)。

输出流:(OutputStream):程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。输出流不关心数据的目的是何种设备(键盘,文件,网络)。

Java流类的分类

Java.io包中定义了多个流类型来实现输入/输出功能。按数据流的方向可以分为输出流和输入流。按处理数据=单位不同可以分为字节流和字符流。按照功能不同可以分为节点流和处理流。Java.io包内都分别继承自一下四种抽象流类型。

节点流和处理流

节点流:是可以从一个特定的数据源(节点)读写数据。

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


输入/输出流类

InputStream:继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图中深色为节点流,浅色为处理流。

InputStream的基本方法:

OutputStream:继承自OutputStream的流都是用于向程序中输出数据,且数据的单位为字节(8bit),下图中深色为节点流,浅色为处理流。

OutputStream的基本方法(调用出close方法之前,先调用flush方法,flush方法的意思是先把缓存区里的数据写出去然后在进行关闭)




Reader:继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit),下图中深色为节点流,浅色为处理流。

Reader的基本方法

Writer:继承自Writer的流都是用于向程序中输出数据,且数据的单位为字符(16bit),下图中深色为节点流,浅色为处理流。

Writer的基本方法(调用出close方法之前,先调用flush方法,flush方法的意思是先把缓存区里的数据写出去然后在进行关闭)

节点流类型(结尾Stream的是字节流,结尾是Reader/Writer的是字符流)

FileInprtStream例子

控制台输出结果

FileOutputStream例子

控制台输出结果

查找写入文件地址



FileReader例子

控制台输出结果


FileWriter例子

控制台输出结果

查找写入文件的地址

处理流类型

缓冲流

缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率。缓冲流分为四种:BufferedReader,BufferedWriter,BufferedInputStream,BufferedOutputStream.其常用方法:

注意事项

BufferedInputStream例子

控制台输出结果


BufferedReader/BufferedWriter例子

控制台输出结果

查找写入文件的地址

转换流


OutputStreamWriter例子

控制台输出结果

查找写入文件的地址(有追加)

查找写入文件的地址(没有追加)

InputStreamReader例子

控制台输出结果

数据流

DataOutputStream,DataInputStream例子

控制台输出结果

Print流(输出/打印流,Print没有输入流)

PrintWriter例子

控制台输出结果

查找写入文件的地址

Object流

Object流例子

控制台输出结果(有transient修饰的)

控制台输出结果(没有transient修饰的)

serializable接口和externallzable接口的区别

serializable接口:用来标记类的对象可以被实例化(不可控制)

externallzable接口:可控实例化(不常用)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,664评论 19 139
  • 当数据量增大到超出了单个物理计算机存储容量时,有必要把它分开存储在多个不同的计算机中。那些管理存储在多个网络互连的...
    单行线的旋律阅读 5,926评论 0 7
  • 笑来老师一遍又一遍的说过记录、总结、写作的重要性。在之前的主题“如何认知、选择、培养正确的刚需”中,笑来老师就...
    木南Ruan阅读 1,300评论 1 2
  • 什么是思维突破?Think out of box 人生总是会遇到各种各样的挫折、难题。聪明的人总是能顺利解决,惹得...
    95搭八阅读 9,259评论 1 13
  • iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个: 这是官方文档,但是你还需要在 info...
    KyXu阅读 10,285评论 15 46