什么是IO流
I就是 In,输入的意思,O就是Out输出的意思
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
使用IO流的好处
可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源抽象表述为"流"。
IO流分支
IO流分为字节流、字符流
字节流
InputStream、OutputStream
字符流
Reader、Writer
然而字节流下又有分支:
FileInputStream、FileOutputStream
字符流分支
FileReader、FileWriter
BufferedReader、BufferedWriter
字节流与字符流的区别
首先,字节流读取或写入文件是按照字节的方式写入、读取的,该情况下读取、写入英文没问题,但是写入或读取中文的时候会出现乱码问题,原因是因为一个中文字符占2个甚至3个字节,然而英文字符只占1个字节,这就造成了读取或输入的问题,我们十一字符流就不会出现这种状况,字符流读取一个字符的大小,有效的避免了乱码问题
采用缓冲区读取文件、写入文件会大大提升系统的性能
BufferedReader、BufferedWriter该类是采用了装饰器模式,统一封装文件输入流的格式,调用统一的方法
使用IO流实现文件的输入输出
基于IO流实现文件的拷贝,需拷贝子文件夹以及子文件夹的文件。
解题思路:利用递归实现文件夹拷贝,一层层往里进,看是否有文件,若有,执行前一遍复制的操作,这样就达到了拷贝文件夹以及子文件夹。
public class FileCopy {
public static void main(String[] args) {
//源文件
String path = "C:/Users/Desktop/0611";
//目标地址
String path2 = "C:/Users/Desktop/0611(复制版)";
//将目标路径放入File类中
File f2 = new File(path2