您的位置:

Java读取文本文件

在Java编程中,读取文本文件是一个很基础的操作。文本文件可以包含各种数据,如配置信息、日志文件、用户数据等等。Java提供了一些类和方法,可以很方便地读取文本文件中的内容。

一、使用BufferedReader读取文本文件

BufferedReader是Java提供的一个输入流类,可以逐行读取文本文件中的内容。

try {
    BufferedReader br = new BufferedReader(new FileReader("filename.txt"));
    String line = "";
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}

以上代码中,我们使用BufferedReader读取了一个名为“filename.txt”的文本文件中的内容。使用readLine()方法可以逐行读取文件内容,每次读取的内容存放在String类型的变量line中。当读取到文件末尾时,readLine()方法返回null,循环结束。需要注意的是,BufferedReader在使用完之后需要手动关闭,否则会出现内存泄漏等问题。

二、使用Scanner读取文本文件

Scanner是Java提供的另一个输入流类,可以读取文本文件中的每个单词或者每一行,并作为字符串或基本数据类型返回。

try {
    Scanner scanner = new Scanner(new File("filename.txt"));
    while (scanner.hasNextLine()) {
        System.out.println(scanner.nextLine());
    }
    scanner.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

以上代码中,我们使用Scanner读取了一个名为“filename.txt”的文本文件中的内容。使用nextLine()方法可以逐行读取文件内容,每次读取的内容存放在String类型的变量中。Scanner在使用完之后也需要手动关闭。

三、使用Files读取文本文件

自Java 7开始,Java提供了一个简单的方法来读取文本文件的所有行。Files类可以读取指定文件的所有行,并将它们作为字符串列表返回。

try {
    List lines = Files.readAllLines(Paths.get("filename.txt"), StandardCharsets.UTF_8);
    for (String line : lines) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

  

以上代码中,我们使用了Files类的readAllLines()方法来读取一个名为“filename.txt”的文本文件中的内容,其中Paths.get()方法用于获取指定路径的Path对象。该方法返回一个字符串列表,其中每个列表项都包含文件中的一行文本。我们可以使用for-each循环对列表进行遍历,输出每行文本。

四、使用BufferedInputStream读取文本文件

BufferedInputStream是Java提供的另一个输入流类,可以读取任何类型的文件,包括文本文件。

try {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream("filename.txt"));
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while ((bytesRead = bis.read(buffer)) != -1) {
        System.out.println(new String(buffer, 0, bytesRead));
    }
    bis.close();
} catch (IOException e) {
    e.printStackTrace();
}

以上代码中,我们使用BufferedInputStream读取了一个名为“filename.txt”的文本文件中的内容。使用read()方法可以读取指定长度的字节数组,并返回实际读取的字节数。因为文件中的内容是以字节形式存储的,我们需要将读取的字节转换为字符,即使用new String()方法将字节数组转换为字符串。另外,BufferedInputStream也需要手动关闭。

五、使用FileReader读取文本文件

FileReader是Java提供的用于读取文件的字符流类,可以方便地读取文本文件中的字符。

try {
    FileReader fr = new FileReader("filename.txt");
    int ch;
    while ((ch = fr.read()) != -1) {
        System.out.print((char) ch);
    }
    fr.close();
} catch (IOException e) {
    e.printStackTrace();
}

以上代码中,我们使用FileReader读取了一个名为“filename.txt”的文本文件中的内容。FileReader中read()方法的返回值是一个字符编码,因此需要将其强制转换为char类型。需要注意的是,FileReader也需要手动关闭。

总结

以上就是Java读取文本文件的几种方法。在选择方法时,需要根据文件大小、读取方式等因素进行权衡。另外,在使用输入流类时需要注意手动关闭流,避免出现资源浪费和内存泄漏等问题。