流根据方向可以分为:输入流和输出流
输入和输出是相对于内存而言的,从内存出来就是输出,到内存中就是输入。输入(读)流叫做InputStream,输出(写)流叫做OutputStream
流根据读取数据的方式可以分为:字节流和字符流
字节流按照字节的方式读取,字符流按照字符的方式读取(2个字节),JAVA语言中一个字符占2个字节。
字节流适合读取:视频,声音,图片等二进制文件。
JAVA语言中所有的字节流都以Stream结尾。所有的字符流都含有Reader或Writer
需要掌握的16个流:
FileInputStream //字节流
FileOutputStream
FileReader //字符流
FileWriter
BufferedReader //字符流
BufferedWriter
Buffer edInputStream //字节流
BufferedOutputStream
//专门读取数据
DataInputStream
DataOutputStream
//读取JAVA对象
ObjectInputStream
ObjectOutputStream
//转换流(字节流转换成字符流)
InputStreamReader
OutputStreamWriter
PrintWriter
PrintStream //标准的输出流(默认输出到控制台)
文件复制例
//只能复制纯文本文件
import java.io.*;
public class test08 {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
char []chars = new char[512];
try {
fr = new FileReader("E:/1234569.txt");
fw = new FileWriter("E:/12345678.txt",true); //true是叠加,不加true则覆盖
int temp = 0;
while((temp=fr.read(chars))!=-1) {
fw.write(chars, 0, temp);
}
fw.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(fr.read(chars)!=-1) {
fr.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}