(一)使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class testCopyFile {
public static void main(String[] args) {
File sourceFile=new File("D:\\JAVA\\1.txt");
File targetFile=new File("D:\\JAVA\\test\\1.txt");
copyFileWithFileStreams(sourceFile, targetFile);
}
//使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B
public static void copyFileWithFileStreams(File source,File target) {
FileInputStream fiStream=null;
FileOutputStream foStream=null;
try {
fiStream=new FileInputStream(source);
foStream=new FileOutputStream(target);
byte[] buffer=new byte[1024];
int len=0;
while((len=fiStream.read(buffer))!=-1 ){
foStream.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(fiStream!=null) {
try {
fiStream.close();
foStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
(二)使用FileChannel复制,Java NIO包括transferFrom方法,比文件流复制的速度更快
package homework;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
public class testCopyFile {
public static void main(String[] args) {
File sourceFile=new File("D:\\JAVA\\1.txt");
File targetFile=new File("D:\\JAVA\\test\\1.txt");
copyFileWithFileChannels(sourceFile, targetFile);
}
//使用FileChannel复制,Java NIO包括transferFrom方法,比文件流复制的速度更快
public static void copyFileWithFileChannels(File source,File target) {
FileChannel inputChannel=null;
FileChannel outputChannel=null;
try {
inputChannel=new FileInputStream(source).getChannel();
outputChannel=new FileOutputStream(target).getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} catch (Exception e) {
e.printStackTrace();
}finally {
if(inputChannel!=null) {
try {
inputChannel.close();
outputChannel.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}