12.3 字节流
一、字节输入流InputStream类
InputStreame类是所有面向字节的输入流的父类,为java.io包中的抽象类。类的定义如下:public abstract class InputStreame extends Object
属于InputStreame类的常用方法:
read():从流中读取数据。
skip():跳过流中若干字节数
available():返回流中可用字节数。
mark():在流中标记一个位置
reset():返回标记的位置
markSupport():是否支持标记和复位操作。
close():关闭流。
抽象类InputStream、OutputStream
二、字节输出流OutputStream 类
1、OutputStream类为所有面向字节的输出流的父类,Java.io包中的抽象类。类的定义:public avstract class OutputStream extends Object.
2、OutputStream类中声明了用于字节流输入的多个方法,包括写出数据、刷新缓冲区、关闭数据流。属于OutputStream类的方法:
Write(int b):将一个整数输出到流中。
Write(byte b[]):将数组中的数据输出到流中。
Write(byte b[],int off,int len):将数组b中从off指定的位置开始
长度的数据输出到流中。
flush():将缓冲区中的数据强制送出。
Close():关闭流
三、键盘输入
package com.hbsi.io;
import java.io.*;
public class DemoKeyInput {
public static void main(String[] args) throws IOException{
//int n=System.in.read();
//System.out.print(char)n);
BufferedInputStream bis=new BufferedInputStream(System.in);
byte arr[]=new byte[10];
int len=bis.read(arr);
System.out.println(new String(arr,0,len));
}
}
四、转换流
OutputStreamWriter和InputStreamReader的构造—他们本身是字符流,又具有转换的作用,因此在构造的时候,需要传入字节流对象
注意:要使用指定编码表时,必须使用转换流。
操作文件的字符流FileReader和FileWriter是转换流的子类,因此从他们的继承关系就可以清楚的发现,不管是使用字节流还是字符流实际上最终都是以字节的形式操作输入和输出的。
在使用FileReader操作文本数据时,该对象使用的是默认的编码表。如果要使用指定编码表时,必须使用转换流。