java学习第35天
一、
今日学习内容
1.流
以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类,所有的输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类。字符流能实现的功能字节流都能实现,反之不一定。如:图片,视频等二进制文件,只能使用字节流读写。
(1)在Java中,每个流都是一个对象。流通常分为两种:输入流和输出流。
-
输入流:只要从流当中不停地把字节取出即可。
-
输出流,只要把准备好的字节串传给它即可。
(2)java.io包中的stream类根据其操作对象的类型可分为:字符流和字节流
(3)Java的字节流
InputStream是所有字节输入流的父类,而OutputStream是所有字节输出流的父类。
(4)Java的字符流
Reader是所有读取字符串输入流的父类,而Writer是所有输出字符串的父类。
(5)字节流和字符流
在Java中,所有的字节流都是以Stream结尾的,所有的字符流都是以Reader/Writer结尾的。
2.流的分类
(1)根据流动方向划分,分为输入流和输出流。
-
输入流:对输入流只能进行读操作,代表从外部流入计算机的数据序列
-
输出流:对输出流只能进行写操作,代表从计算机流入外部的数据序列
(2)根据对流的操作可以分为字节流和字符流。
-
字节流:操作字节序列的对象,如对二进制文件、图片及映像文件的操作。
-
字符流:操作字符序列的对象,如对文本文件等。
3.字节流
1.输出字节流OutputStream
(1)OutputStream是所有的输出字节流的父类,他是一个抽象类。
(2)ByteArrayOutputStream、FileOutputStream是两种基本的介质流,它们分别向Byte数组和本地文件中写入数据。ObjectOutputStream和所有FilterOutputStream的子类都是装饰流。
(3)使用字节输出流OutputStream定义如下:
public abstract class OutputStream extends Object implements Closeable,Flushable
(4)OutputStream类中定义的方法:
关闭流:public void close() throws IOException
写一组数据:public void write(byte[] b) throws IOException
写一个数据:public void write(int b) throws IOException.但是要想将OutputStream实例化,且进行文件操作,就要使用FileOutputStream子类
构造:public FileOutputStream(File file) throws FileNotFoundException
(5)示例:使用字节流输出内容
2.输入字节流InputStream
(1)InputStream是所有的输入字节流的父类,它是一个抽象类。
(2)ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的介质流,它们分别从Byte数组、StringBuffer和本地文件中读取数据。ObjectOutputStream和所有FilterOutputStream的子类都是装饰流。
(3)使用InputStream完成输入字节流的操作,此类定义如下:
public abstract class InputStream extends Object implements Closeable
(4)InputStream类中定义的方法如下:
关闭:public void close() throws IOException
读取一个字节:public abstract int read() throws IOException
读取一组内容:public int read(byte[] b) throws IOException
读取文件,使用子类FileInputStream
(5)示例:使用字节流读文件内容
二、问题
理解流的概念
三、明日学习内容
字节流