1 . io流的分类:
Java.io 包中定义了多中流类型,来实现流入和流出的功能。
按照不同的角度可以分为:输入流和输出流。
按照处理数据的单位来分可以分为字节流和字符流。
按照不同的功能来分可以分为节点流和处理流。
2 .
io流的解释:
1 . 什么叫节点流?
节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存).
2 . 什么叫处理流?
处理流是”连接“在已经存在的流(节点流或处理流)之上,通过对数据的处理为程序
提供更为强大的读写功能 。
Reader流的解释:
图解:
节点流类型 :
图解 :
什么是转换流?
转换流是把字节流转换成字符流。 例如 :InputStreamReader 其中inputStream表示字节流,Reader表示字符流 。InputStreamReader就是
将字节流转换成字符流。
例子:
package com.niiit.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
//将数据写到文本中
public class TestOutputStreamWriter {
public static void main(String[] args) {
File file = new File("D://1.txt"); // 文件对象
FileOutputStream fs;
try {
fs = new FileOutputStream(file);
OutputStreamWriter ow = new OutputStreamWriter(fs); //把字节流转换成 字符流
ow.write("My name is GeorgeDavid"); //将数据写入文件
String str = ow.getEncoding(); //得到字符集编码
ow.flush(); //把数据从缓冲区刷到 目的地(写到文件中)
ow.close();
System.out.println("编码是:" + str);
ow = new OutputStreamWriter(new FileOutputStream(file, true), //true 在文件末尾追加
"ISO-8859-1"); //指定编码
ow.write("ni men shi wo men");
System.out.println("字符集编码是:" + ow.getEncoding());
ow.flush();
ow.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class TestByteArrayInputStream {
public static void main(String[] args) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeDouble(Math.random());
dos.writeBoolean(true);
dos.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos
.toByteArray());
DataInputStream dis = new DataInputStream(bis);
double num = dis.readDouble();
boolean flags = dis.readBoolean();
System.out.println(num);
System.out.println(flags);
} catch (IOException e) {
e.printStackTrace();
}
}
}
打印流
图解