Java文件内容的复制

时间:2023-12-20 20:18:50
package a.ab;

import java.io.*;

public class FileReadWrite {
public static void main(String[] args) {
FileReader fr=null;
FileWriter fw=null;
try{
//将f1文件的内容复制到f2文件中
File f1=new File("D:\\DD\\d.txt");
File f2=new File("D:\\DD\\C.txt"); fr=new FileReader(f1);
fw=new FileWriter(f2);
int count=0;
char []cbuf =new char[1024];//存储文件f1中的内容
while((count=fr.read(cbuf))!=-1){//读取f1 中的内容
fw.write(cbuf);//将数组中的内容写入到文件f2中
fw.flush();//刷新该流的缓冲,使之保存到f2中
System.out.println("写了"+count+"个字符");
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try {
fr.close();//关闭文件读操作
} catch (IOException e) {
e.printStackTrace();
}
try {
fw.close();//关闭文件写操作
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public abstract void flush()
throws IOException
刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。

如果此流的预期目标是由底层操作系统提供的一个抽象(如一个文件),则刷新该流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。

指定者:
接口 Flushable 中的 flush
抛出:
IOException - 如果发生 I/O 错误
public void write(char[] cbuf)
throws IOException
写入字符数组。
参数:
cbuf - 要写入的字符数组
抛出:
IOException - 如果发生 I/O 错误
public int read(char[] cbuf)
throws IOException
将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。
参数:
cbuf - 目标缓冲区
返回:
读取的字符数,如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误