竞赛题解题方法
Java IO流文件复制笔记
今天记录两个竞赛里超常用的文件复制写法,都是带缓冲流的高效版本~
- 文本文件复制:字符缓冲流
专门用来复制txt、java这类纯文本文件,处理中文和换行都很方便,是文本场景最常用的写法。
java
import java.io.*;
public class TextCopy {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(“source.txt”));
BufferedWriter bw = new BufferedWriter(new FileWriter(“copy.txt”));
String line; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } br.close(); bw.close(); }}
- 任意文件复制:字节缓冲流
万能复制方案,不管是图片、视频还是压缩包都能复制,用缓冲流批量读写效率很高。
java
import java.io.*;
public class AnyCopy {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(“source.jpg”));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(“copy.jpg”));
byte[] buf = new byte[1024 * 8]; int len; while ((len = bis.read(buf)) != -1) { bos.write(buf, 0, len); } bis.close(); bos.close(); }}
小总结
- 文本文件优先用字符缓冲流,按行读写很省心。
- 其他所有文件都用字节缓冲流,是通用的高效写法。
- 缓冲流比普通流复制速度快很多,竞赛题里推荐优先用这两种。
需要我帮你把代码改成带try-with-resources的更简洁版本吗?
