第十二章 3 字节流

 

12.3字节流

今天主要讲的是字节流,同时也讲了转换流以及标准输入输出流,具体内容如下:

一、   字节流

1、 字节流主要是inputSream类和outputStream类

2、 字节流可以操作任何数据而字符流只可操作文本数据

3、 字符流使用的是字符数组;字节流使用的是字节数组

下面介绍InputStream类

1、InputStream类是所有面向字节的输入流的父类,为java.io包中的抽象类。类的定义如下:

Public abstract class InputStream extends Object

2、字节流是直接从数据源直接获取数据的。

3、InputStream类中声明了用于字节流输入的多个方法,包括读取数据、标记位置、获取数据量、关闭数据流等。

4、属于InputStream类的方法介绍如下:

Read():从流中读入数据。

Available():返回流中可用字节数。

Close():关闭流。

5、InputStream类的层次结构如下:

OutputStream类

1、OutputStream类为所有面向字节的输出流的父类,为java.io包中的抽象类。类的定义如下:

Public abstract class OutputStream extends Object

2、OutputStream类中声明了用于字节流输出的多个方法,包括写出数据、刷新缓冲区、关闭数据流等。

3、属于OutputStream类的方法介绍如下:

Write(int b):将一个整数输出到流中。

Write(byte b[]):将数组中的数据输出到流中。

Write(byte b[],int off,int len):将数组b中从off指定的位置开始len长度的数据输出到流中。

4、Flush():将缓冲区中的数据强制送出、刷新。

Close():关闭流。

OutputStream类的层次结构如下:

 

 二、文件字节输入输出流(FileInputStream/FileOutputStream)

如上图中所示InputStream和OutputStream是抽象类不能实例化所以文件输入和输出的类一般就使用FileInputStream和FileOutputStream这两个子类来处理,其处理对象都是文件。

1、 文件字节输入流类FileInputStream的使用:

FileInputStream fis = new FileInputStream("a.txt");

//fis.available();//获取关联的文件的字节数。

//如果文件体积不是很大,可以这样操作。

byte[] buf = new byte[fis.available()];//创建一个刚刚好的缓冲区。但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。

fis.read(buf);

System.out.println(new String(buf));

2、文件字节输出流类FileOutputStream的使用:

FileOutputStream fos = new FileOutputStream("a.txt");

fos.write(12);//直接将数据写入到了目的地。

fos.close();//只关闭资源。

三、  转换流

1、在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在一组字节流—字符流的转换流。

a)OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流的输出对象。(字符到字节的桥梁)

    b)InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。(字节到字符的桥梁)

转换过程如下图所示:

以文件操作为例,则在内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取的时候需要讲读入的字节流通过InputStreamReader变为字符流

OutputStreamWriter和InputStreamReader的构造—他么本身就是字符流,又具有转换的作用,因此在构造的时候,需要传入字节流对象

    注意:在使用FileReader操作文本数据时,该对象使用的是默认的编码表。如果要使用指定编码表时,必须使用转换流

四、  标准输入/输出流

标准的输入输出是指在控制台方式下,程序与系统进行交互的方式,分为三种:

a)   标准的输入,对象是键盘。

b)   标准的输出,对象是显示器屏幕。

c)   标准的错误输出,对象也是显示器屏幕。

Java通过System类实现标准的输入输出功能

d)   public static final InputStream in

e)   public static final InputStream out

f)   public static final InputStream err

标准输入System.in
System.in作为字节输入流类InputStream的对象,实现标准的输入,使用其read()方法从键盘接收数据。

g)   public int read() throws IOException

h)   public int read(byte[] i) throws IOException

标准的输出System.out
System.out是打印流类PrintStream的对象,用来实现标准输出。print()和println()方法,支持任意的基本类型作为参数。

i)   public void print(参数)

public void println(参数)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值