Java如何读取txt文件的内容?

您所在的位置:网站首页 java读取doc文件内容 Java如何读取txt文件的内容?

Java如何读取txt文件的内容?

2023-03-16 10:55| 来源: 网络整理| 查看: 265

这个并不困难,大概的步骤是这样的:

TXT是一个文本文件,一般采用流的方式读取:

java提供了一个FileInputStream,我们可以直接以文件路径构造这个流,也可以以文件对象构造他,如:FileInputStream fin = new FileInputStream("d:/aa.txt");

然后使用这个流就可以直接读取到文件了,但是这个时候读取到的内容是int类型的数值,所以需要进一步的处理,我们把fin外面包上一个InputStreamReader,就变成了这样:

InputStreamReader reader = new InputStreamReader(fin);

但是这一个reader读取文本并不是很方便,有一点要注意,在这一个reader的构造方法上面可以设定字符编码;接下来,使用这个reader构造BufferedReader,BufferedReader拥有一个名为readLine的方法,可以读取一整行的文本,作为字符串返回,因此用起来会比较方便。

BufferedReader buffReader = new BufferedReader(reader);

接下来就是借助循环来读取文件中的字符串了,然后,去做你想做的事情好了

import java.io*; public class MainStart{ public static void main(String args[]){ String filePath = "D:/aa.txt"; FileInputStream fin = new FileInputStream(filePath); InputStreamReader reader = new InputStreamReader(fin); BufferedReader buffReader = new BufferedReader(reader); String strTmp = ""; while((strTmp = buffReader.readLine())!=null){ System.out.println(strTmp); } buffReader.close(); } }

大概就是这样了,流是java里面很重要的一个东西,恩。

更新:

新版本的java提供了NIO,我们可以通过这种新的API达成对文件的读写操作:

对于JDK11及以上版本,读取文本文件异常简单,我们只需要这样:

Path path = Paths.get("D:/aa.txt"); String data = Files.readString(path); System.out.println(data);

对于JDK8,你可以这样:

Path path = Paths.get("D:/aa.txt"); List lines = Files.readLines(path);

这就能按照行读取全部的文本内容。

对于jdk8,如果想要一次全部读取,你也可以这样做:

Path path = Paths.get("D:/aa.txt"); byte[] data = Files.readAllBytes(path); String result = new String(data, "utf-8");

更新:

1.读取文件的乱码问题:

使用类库:Cpdetector。

请直接添加相关jar包或者使用maven导入。

CodepageDetectorProxy codepageDetectorProxy = CodepageDetectorProxy.getInstance(); codepageDetectorProxy.add(JChardetFacade.getInstance()); Charset charset = codepageDetectorProxy.detectCodepage(file.toURI().toURL());

Charset就是字符集,可以用来解码byte数组为字符串。

2.二进制读取方式:

2.1 使用DataInputStream:

DataInputStream din = new DataInputStream(new FileInputStream(file)); byte[] data = new byte[1024]; while(din.read(data) > 0) { // 处理数据 } din.close();

2.2 使用RandomAccessFile

RandomAccessFile randomFile = new RandomAccessFile(file, "r"); byte[] data = new byte[1024]; while(randomFile.read(data) > 0) { // 处理数据 } randomFile.close();

2.3两者的区别

RandomAccessFile可以通过移动文件指针改变读取的位置,可以按照几种基本类型直接读取数据,可以跳过一定的字节,整体来看,文件就像一个大的二进制数组。而DataInputStream就是单纯的输入流。

3. 大量数据的处理思路:

3.1 借助ByteBuffer使用堆外内存,在不导致oom的情况且内存充足的情况下可以大量申请内存。

3.2 借助RandomAccessFile分块读取,记录读取的最后位置,处理完毕后继续读。或者多线程处理,拆分整个文件为多个大小相等的块,分入多个子线程进入线程池并发处理。

3.3 用BufferedReader和正则,匹配到特征数据后暂停,然后处理数据,然后继续读取。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3