代码编织梦想

下面是Java流的分类情况
空格代表继承关系
我们可以看到无论是字符流和字节流中每一个输入流(InputStream,Reader)都有相互对应的输出流(OutputStream,Writer).

字节流
InputStream
 FlieInputStream
 PipedInputStream
 ObjectInputStream
 ByteArrayInputStream
 SequenceInputStream
 FilterInputStream
  DataInputStream
  BufferedInputStream
  PushbackInputSteam
OutputStream
 FileOutputStream
 PipedOutputSteam
 ObjectOutputStream
 ByteArrayOutputStream
 FilterOutputStream
  DataOutputStream
  BufferedOutputStream
  PrintStream

字符流
Reader
 InputStreamReader
 FileReader
 CharArrayReader
 PipedReader
 BufferedReader
 StringReader
 FilterReader
Writer
 OutputStreamWriter
 FileWriter
 CharArrayWriter
 PipedWriter
 BufferedWriter
 StringWriter
 FilterWriter
 PrintWriter

常见得字符流及其使用方式:

  文件流FileInputStream和FileOutputStream:
FileInputStream的作用在于通过指定文件路径的方式,将一个文件中的内容作为其他流的数据源,从而可是以哦那个流的方式对文件进行读操作;
FileOutPutStream的作用在于通过指定文件路径的方式,将一个文件作为其他流的目的地,从而可使用流的方式对文件进行写操作。

  字节数组流:ByteArrayInputStream和ByteArrayOutPutStream的作用是在字节数组和流之间搭建桥梁。ByteArrayInputStream的构造方法ByteArrayInputStream(byte【】 buf)可以将字节数组构造成字节数组流的数据源,从而可以通过流的方式来读字节数组(将一个字节数组转换成一个字节流)
同理:ByteArrayOutputStreame的作用在于可以将任意多字节的内容多次写入流中,最后整体转为一个字节数组。

  管道流:PipedInputStream和PipedOutputStream
管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。管道输入流作为一个通信的接收端,管道输出流则作为一个通信的发送端。管道流必须输入、输出并用,即在使用管道前,两者必须进行连接。连接方式有两种。
(1) :在构造方法中进行连接。
PipedInputSteam(PipedOutputStream pos);
PipedOutputStream(PipedInputStream pis);
(怎么解决先生鸡还是先生的问题)
(2):通过各自的connect()方法连接。
输入流:connect(PipedOutputStream pos);
输出流:connect(PipedInputStream pis);

对象流:ObjectOutputStream 和 ObjectInputStream
能够输入/输出对象的流称为对象流。

过滤流:FilterInputStream 和 FilterOutputStream
这两个类是两个抽象类,分别重写了InputStream和OutputStream的所有方法,对其他输入。输出流进行了特殊处理,使得他们在读写数据的同时,还可以对数据进行特殊处理。此外还提供了同步机制,是的摩一世可只有一个线程可以访问一个输入与输出流。要使用过滤流,首先必须把它连接到某个输入/输出节点刘尚,通常在构造方法的参数中指定所要连接的节点流:
FilterInputStream(InputStream in);
FilterOutputStream(OutputStream out);

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/huijigo/article/details/111098196

使用子查询获取,使用 all 关键字获取比所有“国内短线游”价格高的线路信息,按照线路类型、线路价格升序显示线路编号、线路名和价格-爱代码爱编程

查看本章节 查看作业目录 需求说明: 使用子查询获取“国内短线游”及“国内长线游”的线路信息,按照线路类型、线路价格升序显示线路编号、线路名和价格 使用 all 关键字获取比所有“国内短线游”价格高的线路信息,按照线路类型、线路价格升序显示线路编号、线路名和价格 实现思路: 需求说明(1)的解决思路 多行子查询:从线路类型表获取类型名为“国内

The matching wildcard is strict, but no declaration can be found for element ‘rabbit:queue‘.-爱代码爱编程

web项目启动时xml解析错误,具体错误信息如下: Offending resource: URL [jar:file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/****-config-3.0.3-SNAPSHOT.jar!/spring-com/applicationContext-appcontext.xm

牛牛与字符串2-爱代码爱编程

原题链接 题目描述 , 牛牛拿到了一个字符串。他想知道除去字符串本身以外,这个字符串最大的公共前后缀的长度是多少? **例如,**对于字符串ABABA而言,“ABA”即是它的前缀,也是它的后缀,且是最长的公共前后缀,因此最大的长度是3。 , 牛牛无法解决该问题,所以他只好向你求助,给定一个只包含大写字母的字符串s,返回除去字符串本身以外公共前后缀最大长

Intent的数据传递-爱代码爱编程

Intent的数据传递类型分为两类: 1.第一种的向下一个activity传递数据 (1)调用Intent的构造方法传activity名: Intent intent = new Intent(MainActivity.this, Thirdctivity.class); intent.putExtra("name", "zhansan");

小结:类与对象-爱代码爱编程

1.类与对象 类是一个模版,它是抽象的 对象是一个具体的实例 2.方法 定义、调用! 3.对象的引用 引用类型:基本类型(8) 分为4类,分别为: 整型:包括 byte 、 short、 int、 long 泛型:float、double 字符型:char 布尔型:boolean 对象是通过引用来操作的。 4.默认初始化

JVM内存模型-爱代码爱编程

     内存模型: JVM的结构包括类装载子系统、运行时数据区、执行引擎、本地方法接口。            一、下面对运行时数据区的结构再进行详细介绍,运行时数据区又可以划分为堆、线程栈、本地方法栈、方法区、程序计数器。      1、线程栈: 它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。每一次函数调用都对应一个

Java中 i=i++ 问题底层原理解析-爱代码爱编程

有如下代码: public class Main { public static void main(String[] args) { int i = 10; i = i++; System.out.println(i); } } 运行后,发现结果为10,而不是11。这是为什么呢? 首

54-B2-03-0D-5B-27 2019 第一行代码 项目二-爱代码爱编程

实验目的 通过手动创建活动,拓展其功能,从而进一步加深对Android Sudio的更深层次理解。 软件 Android Sudio 实验步骤 1、打开Android Studio新建一个项目,这里选择空白模板(no Add Activity),并命名,点击Finish完成创建。 2、创建完成进入主界面,右击com.example.activit

Python网络编程之六:操作系统发展史及网络编程总结-爱代码爱编程

Python网络编程之六:操作系统发展史及网络编程总结 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 现代计算机系统是一个复杂的系统。 一、为什么要有操作系统 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的

N0.1每周心得-爱代码爱编程

#加入小组已经有几周的时间了,今天谈谈我这几周生活和学习上的改变 生活方面: 从暑假的每天睡懒觉到现在的准时准点到小组学习 ,每天都过得很充实,虽然和我步入大学之前想象中的轻松娱乐大学生活不太一样,但忙碌充实也让我感悟到了大学真正的魅力:提升自己,成为更优秀的自己。 并且这周六我们小组聚餐中,有机会能和学长学姐们深入交流,学长学姐给我们分享在大学中的生

Java并发编程:并发中死锁的形成条件及处理-爱代码爱编程

死锁是一种无限的互相等待的状态,两个或两个以上的线程或进程构成一个互相等待的环状。以两个线程为例,线程一持有A锁同时在等待B锁,而线程二持有B锁同时在等待A锁,这就导致两个线程互相等待无法往下执行。现实生活中一个经典的死锁情形就是四辆汽车通过没有红绿灯的十字路口,假如四辆车同时到达中心的,那么它们将形成一个死锁状态。每辆车拥有自己车道上的使用权,但同时也在

从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?-爱代码爱编程

作者 | Richard Hipp      编译 | 马超 出品 | CSDN(ID:CSDNnews) 如果说有什么事物能够使男程序员心中的父爱完全觉醒,那我想一定是投身于自己创建的开源项目中去了。在和熊谱翔、黄东旭等储多开源大神的接触中,我可以明显感到他们对于自身开源项目的那份执着与热爱。虽然说贝佐斯、盖茨等IT巨头