一.什么是IO流
流源于UNIX中管道的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程的通信,或读写外围设备,外部文件等。
二.IO流分为几类
IO流分为字节流和字符流
字符流包含:Reader 和 Writer
字节流包含:InputStream 和 OutputStream
三.什么是字节流,什么是字符流
字节流如果是文件流的话就用Fileinputstream 和outputstream
字符流同上
字节流是由字节组成的,字节流是最基本的,所有的 Inputstream和Outputstream的子类都是字节流,主要用在处理二进数据,它是按字节来处理的。
字符流是由字符组成的,Java里字符由两个字节组成,所有的 Reader和 Writer的子类都是字符流,主要用在处理文本内容或特定字符。
四.字节流和字符流的区别
节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,
而字符流数据先放在缓冲区,通过缓冲区再操作文件。
读写时一个是按字节读写,一个是按字符。
需要对内容进行按行处理,一般选择字符流。
只读写文件,和文件内容无关的(下载,复制等),一般选用 字节流。
五.字符流和字节流常用类
六.实现文件复制的思路和步骤
先创建和个文本例如txt, FileInputStream和FileOutputStream一个读,一个写。
步骤见代码
public class IO2 {
public static void main(String[] args) {
FileInputStream f1 = null;
FileOutputStream f2 = null;
;
try {
f1 = new FileInputStream("D:\\lenove\\ss.txt");
f2 = new FileOutputStream("D:\\ss.txt");
int n = 0;
do {
try {
n = f1.read();
f2.write(n);
} catch (IOException e) {
e.printStackTrace();
}
} while (n != -1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
f1.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
f2.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
f1.close();
f2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}