字符缓冲流——文本文件复制,任意文件复制
文本文件复制:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextFileCopy {
public static void main(String[] args) {
// 源文件路径和目标文件路径请根据实际情况修改
String sourcePath = "C:/test/源文件.txt";
String targetPath = "C:/test/复制后的文件.txt";
// try-with-resources语法会自动关闭流资源,无需手动释放
try (BufferedReader br = new BufferedReader(new FileReader(sourcePath));
BufferedWriter bw = new BufferedWriter(new FileWriter(targetPath))) {
String line;
// 按行读取文本,读到末尾时readLine()返回null
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine(); // 写入换行符,保持原文件的换行格式
}
System.out.println("文本文件复制完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
任意文件复制:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class AnyFileCopy {
public static void main(String[] args) {
// 可以替换为任意类型文件的路径,比如图片、视频、压缩包等
String sourcePath = "C:/test/源文件.jpg";
String targetPath = "C:/test/复制后的文件.jpg";
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sourcePath));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(targetPath))) {
byte[] buffer = new byte[8192]; // 8KB缓冲区,平衡内存占用和读取效率
int len;
// 每次最多读取8KB内容,read返回实际读取的字节数,到文件末尾返回-1
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len); // 只写入实际读取到的字节长度,避免多余内容
}
System.out.println("文件复制完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

浙公网安备 33010602011771号