IO流主要分为字节流和字符流
InputStream和OutputStream属于字节流
Reader和Writer属于字符流
字节流主要处理音视频(人类不能直接阅读的那种)
字符流主要处理文字(人类能阅读的那种)
字节流也可以处理字符流
字符流不能处理字节流
四个抽象类
抽象类 | 说明 | 常用方法 |
---|---|---|
InputStream | 字节输入流的父类,数据单位为字节 | int read()、void close() |
OutputStream | 字节输出流的父类,数据单位为字节 | void write(int)、 void flush()、 void close() |
Reader | 字符输入流的父类,数据单位为字符 | int read()、void close() |
Writer | 字符输出流的父类,数据单位为字符 | void write(String)、void flush()、void close |
第一个程序操作步骤
- 创建源
- 选择流
- 操作
- 释放资源
public static void main(String[] args) throws UnsupportedEncodingException {
//创建源
File src = new File("abc.txt");
//选择流
try {
InputStream is = new FileInputStream(src);
//操作
try {
int data1 = is.read();//第一个数据h
int data2 = is.read();//第二个数据e
int data3 = is.read();//第三个数据l
System.out.println((char) data1);//返回的是一个编号,需要强转为char类型
System.out.println((char)data2);
System.out.println((char)data3);
//长度超出文本长度时返回 -1
//释放资源
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}