import java.io.*;
public class Copy_1 {
public static void main(String[] args) throws Exception {
// 创建一个字节输入流,用于读取当前目录下source文件夹中的文件
InputStream in = new FileInputStream("1.txt");
// 创建一个文件字节输出流,用于将读取的数据写入target目录下的文件中
OutputStream out = new FileOutputStream("1c.txt");
int len; // 定义一个int类型的变量len,记住每次读取的一个字节
// 获取拷贝文件前的系统时间
long begintime = System.currentTimeMillis();
while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
// System.out.print(len + " ");
out.write(len); // 将读到的字节写入文件
}
// 获取文件拷贝结束时的系统时间
long endtime = System.currentTimeMillis();
System.out.println("拷贝文件所消耗的时间是:" + (endtime - begintime) + "毫秒");
in.close();
out.close();
}
}
文件复制优化
import java.io.*;
public class Copy_2 {
public static void main(String[] args) throws Exception {
// 创建一个字节输入流,用于读取当前目录下source文件夹中的文件
InputStream in = new FileInputStream("1.txt");
// 创建一个文件字节输出流,用于将读取的数据写入当前目录的target文件中
OutputStream out = new FileOutputStream("1c.txt");
// 以下是用缓冲区读写文件
byte[] buff = new byte[1024]; // 定义一个字节数组,作为缓冲区
// 定义一个int类型的变量len记住读取读入缓冲区的字节数
int len;
long begintime = System.currentTimeMillis();
while ((len = in.read(buff)) != -1) { // 判断是否读到文件末尾
// System.out.print(len + " ");
out.write(buff, 0, len); // 从第一个字节开始,向文件写入len个字节
}
long endtime = System.currentTimeMillis();
System.out.println("拷贝文件所消耗的时间是:" + (endtime - begintime) + "毫秒");
in.close();
out.close();
}
}
字符流 文件复制用字节数组作为缓冲区读/写文件可以有效提高程序的执行效率。
import java.io.*;
public class File_read {
public static void main(String[] args) throws Exception {
// 创建一个FileReader对象用来读取文件中的字符
FileReader reader = new FileReader("1.txt");
// 创建一个FileWriter对象用于向文件中写入数据
FileWriter writer = new FileWriter("1c.txt");
int ch; // 定义一个变量用于记录读取的字符
while ((ch = reader.read()) != -1) { // 循环判断是否读取到文件的末尾
// System.out.print(ch + " ");
writer.write((char) ch); // 将字符数据写入到文本文件中
}
reader.close(); // 关闭文件读取流,释放资源
writer.close(); // 关闭写入流,释放资源
}
}
文件复制优化
import java.io.*;
public class Line_read {
public static void main(String[] args) throws Exception {
FileReader reader = new FileReader("1.txt");
// 创建一个BufferedReader缓冲对象
BufferedReader br = new BufferedReader(reader);
FileWriter writer = new FileWriter("1c.txt");
// 创建一个BufferdWriter缓冲区对象
BufferedWriter bw = new BufferedWriter(writer);
String str;
// 每次读取一行文本,判断是否到文件末尾
while ((str = br.readLine()) != null) {
bw.write(str);
// 写入一个换行符,该方法会根据不同的操作系统生成相应的换行符
bw.newline();
}
br.close();
bw.close();
}
}
在BufferedReader中有一个重要的方法readLine(),该方法用于一次读取一行文本



