Java 使用FileStreams复制文件

Java 使用FileStreams复制文件

复制文件的主要逻辑是读取与 FileInputStream 变量相关的文件,并将读取的内容写入与 FileOutputStream 变量相关的文件中。我们可以使用Java中的FileInputStream和FileOutputStream类将一个文件从一个地方复制到另一个地方。现在,在继续前进之前,让我们讨论一下程序中将要使用的基本方法。

方法1:read(): 读取一个字节的数据。存在于FileInputStream中。

返回类型: 一个整数值

语法: 其他版本

int read(byte[] bytearray

or

int read(byte[] bytearray, int offset, int length)

方法2:write(int b ):写一个字节的数据。存在于FileOutputStream中

语法

void write(byte[] bytearray)

or

void write(byte[] bytearray, int offset, int length)

实现: 我们将创建两个名为 “demo.rtf “和 “outputdemo.rtf “的文件,作为另一个没有内容的文件。下面是一个 “demo.rtf “文件的图像,作为输入图像的样本。

  • 首先,我们将创建两个 File类 的对象,一个是指FileInputClass,另一个是指FileOutputStream Class。
  • 现在我们将创建FileInputStream类和FileOutputStream类的对象,然后再创建变量并将空值分配给相应的数据类型。
  • 传递FileInputStream和FileOutputStream对象的各自对象
  • 现在使用循环不断地从一个文件中读取,并使用FileOuputStream的read()和write()方法将其写到另一个文件中。

提示: 关闭流是很好的做法,以避免内存泄漏。

在Java中使用FileStreams复制文件

例1 :

// Java Program to Illustrate File InputStream and File
 
// Importing required classes
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of File class
        // Passing files from directory of local machine
        File file = new File(
            "/Users/mayanksolanki/Desktop/demo.rtf");
        File oFile = new File(
            "/Users/mayanksolanki/Desktop/outputdemo.rtf");
 
        // Now creating object of FileInputStream
        // Here they are variables
        FileInputStream fis = null;
        FileOutputStream fos = null;
 
        try {
            // Now we make them as objects of both classes
            // and passed reference of file in directory
            fis = new FileInputStream(file);
            fos = new FileOutputStream(oFile);
        }
 
        // Catch block to handle exceptions
        catch (FileNotFoundException e) {
 
            // Display message if exception occurs
            // File Not Found or Path is Incorrect
            System.out.println(e.printStackTrace());
        }
 
        try {
 
            // Now let us check how many bytes are available
            // inside content of file
            fis.available();
        }
 
        catch (Exception e) {
            e.printStackTrace();
        }
 
        // Using while loop to
        // write over outputdemo file
        int i = 0;
        while (i = fis.read() != -1) {
            fos.write(i);
        }
 
        // It will execute no matter what
        // to close connections which is
        // always good practice
        finally
        {
 
            // Closing the file connections
 
            // For input stream
            if (fis != null😉 {
                fis.clsoe();
            }
 
            // For output stream
            if (fos != null) {
                fos.close();
            }
        }
    }
}

输出: 同样的内容将反映在 “outputdemo.rtf “文件中,如下图 “demo.rtf “文件。

在Java中使用FileStreams复制文件

例2 :

// Java Program Illustrating Copying a src File
// to Destination
 
// Importing required classes
import java.io.*;
 
// Main class
// src2dest
class GFG {
 
    // Main driver method
    public static void main(String args[])
        throws FileNotFoundException, IOException
    {
 
        // If file doesnot exist FileInputStream throws
        // FileNotFoundException and read() write() throws
        // IOException if I/O error occurs
        FileInputStream fis = new FileInputStream(args[0]);
 
        // Assuming that the file exists and
        // need not to be checked
        FileOutputStream fos
            = new FileOutputStream(args[1]);
 
        int b;
        while ((b = fis.read()) != -1)
            fos.write(b);
 
        // read() method will read only next int so we used
        // while loop here in order to read upto end of file
        // and keep writing the read int into dest file
        fis.close();
        fos.close();
    }
}

输出

在Java中使用FileStreams复制文件

输出说明: 必须使用命令行参数提供src文件和dest文件的名称,其中args[0]是源文件的名称,args[1]是目标文件的名称。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程