package cn.dj.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件的复制
* @author Administrator
*
*/
public class CopyFileDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
copy_2();
}
/* * method_3
* @throws IOException
*/
public static void copy_3() throws IOException {
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream("c:\\0.ape");
BufferedInputStream bufis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("c:\\3.ape");
BufferedOutputStream bufos = new BufferedOutputStream(fos);
int ch = 0;
while ((ch = bufis.read()) != -1) {
bufos.write(ch);
}
bufos.close();
bufis.close();
}
/**
* method_2
* @throws IOException
* @author Administrator
*
*
*/
public static void copy_2() throws IOException {
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream("c:\\0.ape");
BufferedInputStream bufis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("c:\\2.ape");
BufferedOutputStream bufos = new BufferedOutputStream(fos);
byte[] buf = new byte[1024];
int len = 0;
while ((len = bufis.read(buf)) != -1) {
bufos.write(buf, 0, len);
}
bufos.close();
bufis.close();
}
/**
* method_1
* @throws IOException
*/
public static void copy_1() throws IOException {
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream("c:\\0.ape");
FileOutputStream fos = new FileOutputStream("c:\\1.ape");
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.close();
fis.close();
}
}
这段Java代码演示了三种不同的方法来复制文件。每个方法都使用了不同的I/O流来实现文件的读取和写入。下面是对每个方法的解释:
方法1: copy_1()
- 使用
FileInputStream
来读取源文件。 - 使用
FileOutputStream
来写入目标文件。 - 定义了一个缓冲区
buf
,大小为1024字节。 - 在一个循环中,使用
read
方法从源文件读取数据到缓冲区,然后使用write
方法将缓冲区的数据写入目标文件。 - 循环直到读取操作返回-1,表示文件末尾。
- 最后关闭了输入和输出流。
方法2: copy_2()
- 与方法1类似,但增加了
BufferedInputStream
和BufferedOutputStream
来提供缓冲功能,这可以提高文件读写的效率。 - 同样使用了一个1024字节的缓冲区。
- 循环中使用
read
方法从源文件读取数据到缓冲区,然后使用write
方法将缓冲区的数据写入目标文件。 - 循环直到读取操作返回-1。
- 最后关闭了输入和输出流。
方法3: copy_3()
- 使用
FileInputStream
和FileOutputStream
来处理文件读写。 - 使用
BufferedInputStream
和BufferedOutputStream
来提供缓冲。 - 没有使用缓冲区数组,而是直接在循环中读取单个字符并写入目标文件。
- 循环直到读取操作返回-1。
- 最后关闭了输入和输出流。