用自定义数组拷贝一个文件。
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("004.jpg");
FileOutputStream fos = new FileOutputStream("dest.jpg");
byte[] buffer = new byte[1024]; // 定义byte[]用来存储数据
int len; // 定义int变量用来记住有效数据的个数
while ((len = fis.read(buffer)) != -1) // 一次读取buffer.length个数据, 将数据存在buffer中, len记住个数. 如果没遇到文件末尾, 进入循环
fos.write(buffer, 0, len); // 将数组中的数据从0号索引开始, 写出len个
fis.close();
fos.close();
}
用ByteArrayOutputStream拷贝一个文件
private static void demo4() throws FileNotFoundException, IOException {
FileInputStream fis = new FileInputStream("004.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1)
baos.write(buffer, 0, len); // 将文件中的所有数据都写到内存中
fis.close();
baos.close();
byte[] data = baos.toByteArray(); // 获取文件数据
FileOutputStream fos = new FileOutputStream("dest2.jpg");
fos.write(data); // 一次性写出所有数据
fos.close();
}
这两种方法哪个快,为什么啊?以后工作中哪个更常用? |