Java学习34天

一、今日学习内容

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)示例:使用字节流读文件内容

 

 

 3、字节流缓冲BufferedInputStream和BufferedOutputStream

public class BufferedInputStream extends FilterInputStream

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

public class BufferedOutputStream extends FilterOutputStream

该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。

二、遇到问题

三、明日学习

字符流

posted @ 2020-08-08 21:15  居酿圆子  阅读(79)  评论(0编辑  收藏  举报