Java读取文本文件方法
海拥 人气:0前言:
有多种写入和读取文本文件的方法。这在处理许多应用程序时是必需的。在 Java
中有多种方法可以读取纯文本文件,例如你可以使用FileReader
、BufferedReader
或Scanner
来读取文本文件。每个实用程序都提供了一些特殊的东西,例如 BufferedReader
为快速读取提供数据缓冲,而 Scanner
提供解析能力。
1、方法
- 使用
BufferedReader
类 - 使用
Scanner
类 - 使用文件阅读器类
- 读取列表中的整个文件
- 将文本文件读取为字符串
我们还可以同时使用 BufferReader
和 Scanner
在 Java
中逐行读取文本文件。然后 Java SE 8
引入了另一个 Stream
类java.util.stream.Stream
,它提供了一种惰性且更有效的方式来读取文件。
让我们更深入地讨论上述每个方法,最重要的是通过一个干净的 Java
程序实现它们。
方法一、 使用BufferedReader类
此方法从字符输入流中读取文本。它确实缓冲以有效读取字符、数组和行。可以指定缓冲区大小,也可以使用默认大小。对于大多数用途,默认值足够大。通常,Reader
发出的每个读取请求都会导致对底层字符或字节流发出相应的读取请求。因此,建议将 BufferedReader
包装在任何 read()
操作可能代价高昂的 Reader
周围,例如 FileReaders
和 InputStreamReaders
,如下所示:
BufferedReader in = new BufferedReader(Reader in, int size);
例子:
import java.io.*; public class HY { public static void main(String[] args) throws Exception { File file = new File( "C:\\Users\\pankaj\\Desktop\\test.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); String st; while ((st = br.readLine()) != null) System.out.println(st); } }
输出:
如果你想学习编程可以参考海拥的博客
方法二、使用 FileReader 类
读取字符文件的便利类。此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。
该类中定义的构造函数如下:
FileReader(File file):
给定要读取的文件,创建一个新的FileReader
FileReader(FileDescriptor fd):
创建一个新的FileReader
,给定要从中读取的FileDescriptor
FileReader(String fileName):
创建一个新的FileReader
,给出要读取的文件名
例子:
import java.io.*; public class GFG { public static void main(String[] args) throws Exception { FileReader fr = new FileReader( "C:\\Users\\pankaj\\Desktop\\test.txt"); int i; while ((i = fr.read()) != -1) System.out.print((char)i); } }
输出:
如果你想学习编程可以参考海拥的博客
方法三、使用 Scanner 类
一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。Scanner
使用分隔符模式将其输入分解为标记,默认情况下与空格匹配。然后可以使用各种 next
方法将结果令牌转换为不同类型的值。
示例 1: 使用循环
import java.io.File; import java.util.Scanner; public class ReadFromFileUsingScanner { public static void main(String[] args) throws Exception{ File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt"); Scanner sc = new Scanner(file); while (sc.hasNextLine()) System.out.println(sc.nextLine()); } }
输出:
如果你想学习编程可以参考海拥的博客
示例 2: 不使用循环
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadingEntireFileWithoutLoop{ public static void main(String[] args) throws FileNotFoundException{ File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt"); Scanner sc = new Scanner(file); sc.useDelimiter("\\Z"); System.out.println(sc.next()); } }
输出:
如果你想学习编程可以参考海拥的博客
方法四、读取列表中的整个文件
从文件中读取所有行。此方法可确保在读取所有字节或抛出 I/O
错误或其他运行时异常时关闭文件。使用指定的字符集将文件中的字节解码为字符。
2、语法
public static List readAllLines(Path path,Charset cs)throws IOException
此方法将以下内容识别为行终止符:
\u000D 后跟 \u000A,回车后跟换行符 \u000A,换行 \u000D,回车
例子:
import java.util.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.io.*; public class ReadFileIntoList{ public static List<String> readFileInList(String fileName){ List<String> lines = Collections.emptyList(); try{ lines = Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8); } catch (IOException e){ e.printStackTrace(); } return lines; } public static void main(String[] args){ List l = readFileInList("C:\\Users\\pankaj\\Desktop\\test.java"); Iterator<String> itr = l.iterator(); while (itr.hasNext()) System.out.println(itr.next()); } }
输出:
如果你想学习编程可以参考海拥的博客
方法五、将文本文件读取为字符串
例子:
package io; import java.nio.file.*;; public class ReadTextAsString { public static String readFileAsString(String fileName)throws Exception{ String data = ""; data = new String(Files.readAllBytes(Paths.get(fileName))); return data; } public static void main(String[] args) throws Exception{ String data = readFileAsString("C:\\Users\\pankaj\\Desktop\\test.java"); System.out.println(data); } }
输出:
如果你想学习编程可以参考海拥的博客
加载全部内容