您的位置:

Java读取文件

Java是一种面向对象的编程语言,以其强大的语法规则和纵向扩展性而广受欢迎。Java提供了强大的文件读取API,它可以轻松读取各种类型的文件,如文本文件、二进制文件等。在任何开发环境中,文件读取和处理是非常重要的一部分,因此在本文中,我们将对Java读取文件进行详细讨论。

一、File类和Path类

Java中读取文件的第一步是实例化File类和Path类。File类提供了文件的属性、整个路径、文件名、以及目录路径等等信息。Path类是与File类类似的类,它可以更轻松有效地管理文件(包括跨平台的路径匹配)。下面是一个示例代码,演示如何使用File类和Path类来读取文件。
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class ReadFile {
    public static void main(String[] args) {
        Path path = Paths.get("file.txt");
        try {
            List lines = Files.readAllLines(path);
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

  
首先,我们使用Path类指定要读取的文件。在这个例子中,我们将要读取的文件名为"file.txt",这个文件在当前的工作目录下。尽管可以通过直接实例化File类,但是我们使用Path类来更好地处理跨平台的路径。接着,我们使用Files类的readAllLines()方法按行读取文件内容,并将内容打印出来。如果文件不存在或者访问被拒绝,catch块将抛出Exception并处理异常。

二、BufferedReader类

Java提供了一种更快速、更高效的文件读取方法--使用BufferedReader类。BufferedReader是一个带有缓冲区的字符输入流,相比较于直接开启I/O流,BufferedReader不需要每次从磁盘读取每一行数据。它可以在缓存区读取一定的字节并在需要时将数据传递给I/O流。下面是一个使用BufferedReader类来读取文件的示例代码。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {
    public static void main(String[] args) {
        String fileName = "file.txt";
        try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
首先,我们指定文件名为"file.txt",然后使用BufferedReader类来按行读取文件内容。我们在try块中实例化BufferedReader类并将读取到的每行数据保留在line字符串中,直到文件的末尾。如果读取失败,catch块将捕获I/O异常并打印异常栈跟踪。

三、Scanner类

Java的Scanner类可以轻松地读取并解析包含分隔符的文件。Scanner类是Java的一个基本方法,可以解析字符串、基本数据类型和文件,并可以自动根据制定的分隔符进行分隔,或者允许使用定界符来为输入流定义元素。下面是一个使用Scanner类读取文件的示例代码。
import java.io.File;
import java.util.Scanner;

public class ReadFile {
    public static void main(String[] args){
        try {
            File file = new File("file.txt");
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()){
                String line = scanner.nextLine();
                System.out.println(line);
            }
            scanner.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
我们使用File类来实例化一个要读取的文件,然后使用Scanner类读取文件内容。我们打开一个scanner对象,并将要读取的文件传递给它。执行结束时,我们关闭Scanner对象,以便释放它占用的系统资源。

四、RandomAccessFile类

Java的RandomAccessFile类允许以随机访问的方式读取和写入文件,这意味着我们可以定位和修改文件的任何部分。我们可以像读取缓冲区中的数据一样读取文件内容。下面是一个演示如何使用RandomAccessFile类读取文件内容的示例代码。
import java.io.RandomAccessFile;

public class ReadFile {
    public static void main(String[] args) {
        try(RandomAccessFile raf = new RandomAccessFile("file.txt", "r")) {
            String line = raf.readLine();
            while(line != null) {
                System.out.println(line);
                line = raf.readLine();
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
我们在try块中实例化RandomAccessFile类,并使用"r"模式以只读方式打开文件。然后,我们使用readLine()方法读取文件内容,并将其存储在line变量中。最后,我们,在while循环中打印每行内容直到文件结束。如果读取失败,catch块将捕获异常并打印异常栈跟踪。

五、总结

本文介绍了Java读取文件的4种方法,包括使用File类和Path类、BufferedReader类、Scanner类和RandomAccessFile类。每种方法都有其自身的优点和限制,具体的应用场景,可以根据你的需求来选择合适的方法。任何方法都可能出现异常,因此请始终在代码中进行异常处理和资源管理。