在文件复制中,通常来说,都是一边读一边写,将读取的数据写入要写入的文件中,这也是通用做法。
下面看看具体实现:
package learnjava.fileIO;
import java.io.*;
public class CopyFileDemo {
public static void main(String[] args) {
copyFileByStream();
copyFileByChar();
}
public static void copyFileByStream() {
System.out.println("Start, Using inputStream || outputStream to copy file...");
String src = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_src";
String dst = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_dst";
try {
// create obj
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dst);
// loop read and write
byte[] buf = new byte[1024];
int len;
while ((len = fis.read(buf)) > 0) {
fos.write(buf, 0, len);
}
// close obj
fis.close();
fos.close();
System.out.println("End, Using inputStream || outputStream to copy file...");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copyFileByChar() {
System.out.println("Start, Using Reader || Writer to copy file...");
String src = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_src";
String dst = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_dst";
try {
// create obj
FileReader fis = new FileReader(src);
FileWriter fos = new FileWriter(dst);
// loop read and write
char[] buf = new char[1024];
int len;
while ((len = fis.read(buf)) > 0) {
fos.write(buf, 0, len);
}
// close obj
fis.close();
fos.close();
System.out.println("End, Using FileReader and FileWriter to copy file...");
} catch (IOException e) {
e.printStackTrace();
}
}
// copy file by buffered stream
public static void copyFileByBufferedStream() {
}
// copy file by buffered reader and writer
public static void copyFIleByBuffered() {
}
}