java中实现字节型文件的复制
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public
class Fc {
public static void main(String[] args) {
String path = "E:\\11\\11\\b.txt";
String path2 = "E:\\11\\22\\b.txt";
File file = new File(path);//建立要复制的文件对象
File file2 = new File(path2);//建立要粘贴的文件对象
copyFile(file, file2);
}
/**
* 读取文件中的字节,并用一个字节数组存起来返回
* @param file 要进行读取操作的文件
* @return 文件中的字节数组
*/
public static byte[] readFile(File file){
try {
FileInputStream fis = new FileInputStream(file);//利用文件对象生成文件输入流对象
BufferedInputStream bis = new BufferedInputStream(fis);//打包成缓冲输入流来批量输出文件输出流中的数据,加快数据的传递
byte[] b = new byte[bis.available()];
bis.read(b);
fis.close();
return b;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将一个字节数组中的字节写到目标文件中
* @param b 操作的字节数组
* @param file2 操作的目标文件
*/
public static void writeFile(byte[] b,File file2){
try {
FileOutputStream fos = new FileOutputStream(file2);//利用文件对象生成文件输出流对象
BufferedOutputStream bos = new BufferedOutputStream(fos);//将文件输出流对象打包成文件缓冲流输出,加快数据的传输
bos.write(b);
//强制将输出管道中的数据输出到目标中,因为数据传输的数据远快于
内存保存数据的速度,如果没这句,将会出现数据的丢失
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将一个文件复制到另一个位置
* @param file 被复制的文件
* @param file2 粘贴文件的位置文件
*/
public static void copyFile(File file,File file2){
byte[] b = readFile(file);
writeFile(b, file2);
}
}
给跪了,这样竟然比操作系统自带的复制粘贴快 - -! 这特么是在逗我么...