Java IO 四种文件复制方式
Java 四种文件复制方式
一.
Java IO 流分为字符流与字节流,字符流只处理文本,字节流可复制任意文件。本文整理四种常用文件复制代码,适合课堂作业直接提交。
二、基础字符流复制
java
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyByChar {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("src/a.txt");
FileWriter fw = new FileWriter("src/a_copy.txt");
int ch;
while((ch = fr.read()) != -1){
fw.write(ch);
}
fw.close();
fr.close();
}
}
特点:仅文本、效率低、入门基础
三、字符缓冲流复制
java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyByBuffChar {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("src/a_copy2.txt"));
String line;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
}
}
特点:带缓冲区、按行读取、文本最优
四、基础字节流复制(任意文件)
java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyByByte {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("src/1.jpg");
FileOutputStream fos = new FileOutputStream("src/1_copy.jpg");
int b;
while((b = fis.read()) != -1){
fos.write(b);
}
fos.close();
fis.close();
}
}
特点:支持图片/视频/压缩包,单字节读写较慢
五、字节缓冲流复制
java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyByBuffByte {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/1.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/1_copy2.jpg"));
byte[] buf = new byte[1024];
int len;
while((len = bis.read(buf)) != -1){
bos.write(buf,0,len);
}
bos.close();
bis.close();
}
}
特点:速度最快、万能通用、作业首选
六、总结对比
1. 字符流:只复制文本文件
2. 字节流:可复制所有类型文件
3. 缓冲流:读写效率远高于普通流
4. 开发优先使用字节缓冲流
更多推荐

所有评论(0)