# 如何使用 Java 将文件复制到另一个文件

> 原文： [https://beginnersbook.com/2014/05/how-to-copy-a-file-to-another-file-in-java/](https://beginnersbook.com/2014/05/how-to-copy-a-file-to-another-file-in-java/)

在本教程中，我们将了解如何将一个文件的内容复制到 java 中的另一个文件中。为了复制文件，首先我们可以[使用](https://beginnersbook.com/2014/01/how-to-read-file-in-java-bufferedinputstream/) [FileInputStream](https://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html) 读取文件然后我们可以[使用](https://beginnersbook.com/2014/01/how-to-write-to-a-file-in-java-using-fileoutputstream/) [FileOutputStream 将读取的内容写入输出文件](https://docs.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html) 。

### 例

下面的代码会将“MyInputFile.txt”的内容复制到“MyOutputFile.txt”文件中。如果“MyOutputFile.txt”不存在，则程序将首先创建文件，然后复制内容。

```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyExample 
{
    public static void main(String[] args)
    {	
    	FileInputStream instream = null;
	FileOutputStream outstream = null;

    	try{
    	    File infile =new File("C:\\MyInputFile.txt");
    	    File outfile =new File("C:\\MyOutputFile.txt");

    	    instream = new FileInputStream(infile);
    	    outstream = new FileOutputStream(outfile);

    	    byte[] buffer = new byte[1024];

    	    int length;
    	    /*copying the contents from input stream to
    	     * output stream using read and write methods
    	     */
    	    while ((length = instream.read(buffer)) > 0){
    	    	outstream.write(buffer, 0, length);
    	    }

    	    //Closing the input/output file streams
    	    instream.close();
    	    outstream.close();

    	    System.out.println("File copied successfully!!");

    	}catch(IOException ioe){
    		ioe.printStackTrace();
    	 }
    }
}
```

输出：

```java
File copied successfully!!
```

上述程序中使用的方法是：

#### read（）方法

```java
public int read(byte[] b) throws IOException
```

将此输入流中的 b.length 个字节数据读入一个字节数组。此方法将阻止，直到某些输入可用。它返回读入缓冲区的总字节数，如果没有更多数据，则返回-1，因为已到达文件末尾。为了使这个方法在我们的程序中工作，我们创建了一个字节数组“buffer”并将输入文件的内容读取到相同的内容。由于此方法抛出 IOException，因此我们将“读取文件”代码放在 try-catch 块中以处理异常。

#### write（）方法

```java
public void write(byte[] b,
                  int off,
                  int length)
           throws IOException
```

将从 offset off 开始的指定字节数组的长度字节写入此文件输出流。

**调整：**
如果输入和输出文件不在同一个驱动器中，则可以在创建文件对象时指定驱动器。例如，如果您的输入文件在 C 盘中并且输出文件在 D 盘中，那么您可以创建如下文件对象：

```java
File infile =new File("C:\\MyInputFile.txt");
File outfile =new File("D:\\MyOutputFile.txt");
```