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

如何使用Java函数读取文件内容?

发布时间:2023-06-01 20:57:45

在Java中,可以使用几种不同的方法来读取文件内容。本文将为您介绍三种最常用的方法:Scanner类、BufferedReader类和Files类。

1. Scanner类

Scanner是Java IO中的一个类,它可以用来从文本文件中读取数据。以下是一个读取文件内容的简单代码示例:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFileUsingScanner {

   public static void main(String[] args) {

      try {
         File myObj = new File("filename.txt");
         Scanner myReader = new Scanner(myObj);
         while (myReader.hasNextLine()) {
            String data = myReader.nextLine();
            System.out.println(data);
         }
         myReader.close();
      } catch (FileNotFoundException e) {
         System.out.println("An error occurred.");
         e.printStackTrace();
      }
   }
}

上面的代码示例中,我们使用Scanner类的构造函数来创建一个新的Scanner对象,打开包含要读取的文件的文件。该文件必须存在,否则将会抛出FileNotFoundException异常。我们然后使用while循环迭代文件中的每一行,并使用nextLine()方法来获取每一行的内容。

2. BufferedReader类

除了Scanner类,Java还提供了另一个类——BufferedReader来读取文件内容。以下是一个使用BufferedReader读取文件的代码示例:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadFileUsingBufferedReader {

   public static void main(String[] args) {

      File file = new File("filename.txt");

      try (BufferedReader br = new BufferedReader(new FileReader(file))) {

         String line;
         while ((line = br.readLine()) != null) {
            System.out.println(line);
         }

      } catch (IOException e) {
         System.out.println("An error occurred.");
         e.printStackTrace();
      }

   }
}

上面的代码示例中,我们使用FileReader和BufferedReader类来创建读取文件的BR对象。由于BufferedReader类实现了AutoClosable接口,我们可以使用try-with-resources语句来自动关闭文件。

3. Files类

最后一种方法是使用Java NIO Paths和Files类。以下是一个使用Files来读取文件内容的代码示例:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class ReadFileUsingFiles {

   public static void main(String[] args) {

      Path path = Paths.get("filename.txt");

      try {
         List<String> lines = Files.readAllLines(path);
         for(String line: lines){
            System.out.println(line);
         }
      } catch (IOException e) {
         System.out.println("An error occurred.");
         e.printStackTrace();
      }

   }
}

上面的代码示例中,我们使用Paths和Files类来创建文件对象。Files类的readAllLines()方法会返回一个List<String>,List中的每个元素都是被文件中的一个换行符分割的一行文本。

这三种方法都可以用来读取文件内容,选择使用哪种方法取决于个人偏好。但是,需要注意的是,一般来说Files读取的速度比BufferedReader慢,而Scanner的速度比BufferedReader更慢,因此 在实际使用中进行比较。