欢迎访问宙启技术站
智能推送

Java函数:如何编写一个完整的文件读写函数?

发布时间:2023-07-01 16:49:52

在Java中,我们可以使用字节流和字符流两种方式来进行文件读写操作。下面将分别介绍如何使用这两种方式编写一个完整的文件读写函数。

一、字节流方式

使用字节流方式读写文件,主要涉及到FileInputStream和FileOutputStream两个类。以下是一个完整的文件读写函数:

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

public class FileReadWriteExample {

    public static void main(String[] args) {
        String sourceFile = "input.txt";
        String destinationFile = "output.txt";
        copyFile(sourceFile, destinationFile);
    }

    public static void copyFile(String sourceFile, String destinationFile) {
        File file = new File(sourceFile);
        try (FileInputStream fis = new FileInputStream(file);
             FileOutputStream fos = new FileOutputStream(destinationFile)) {

            byte[] buffer = new byte[1024];
            int length;

            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }

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

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在函数copyFile中,首先创建一个File对象,然后使用FileInputStream将源文件读入字节流,使用FileOutputStream将字节流写入目标文件。通过使用一个缓冲区(字节数组buffer)来提高读写的效率,通过设置length来记录每次读取的字节数量,然后使用fos.write(buffer, 0, length)将字节写入目标文件。最后,在IOException捕获块中处理异常情况。

二、字符流方式

使用字符流方式读写文件,主要涉及到FileReader和FileWriter两个类。以下是一个完整的文件读写函数:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReadWriteExample {

    public static void main(String[] args) {
        String sourceFile = "input.txt";
        String destinationFile = "output.txt";
        copyFile(sourceFile, destinationFile);
    }

    public static void copyFile(String sourceFile, String destinationFile) {
        try (BufferedReader br = new BufferedReader(new FileReader(sourceFile));
             BufferedWriter bw = new BufferedWriter(new FileWriter(destinationFile))) {

            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }

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

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在函数copyFile中,首先创建一个BufferedReader对象,通过FileReader将源文件读入字符流。然后,创建一个BufferedWriter对象,通过FileWriter将字符流写入目标文件。通过循环读取每行文本数据,使用bw.write(line)将每行写入目标文件,并使用bw.newLine()添加换行符。最后,在IOException捕获块中处理异常情况。

以上就是使用Java字节流和字符流两种方式编写一个完整的文件读写函数的教程,分别介绍了如何使用这两种方式读取和写入文件,希望能对你有所帮助。