从文件中读取大(450000+ 字符)字符串

Posted

技术标签:

【中文标题】从文件中读取大(450000+ 字符)字符串【英文标题】:reading large (450000+ chars) strings from file 【发布时间】:2015-06-24 09:02:09 【问题描述】:

所以,我正在处理集成遗留系统。它生成一个大文本文件,在一个大字符串中打印指令。真正的大字符串。我们说的是 450 000 个字符或更多。

我需要把它分成几行,每条指令一个。每条指令由一个五位代码分隔,其中代码包含下一条指令中的字符数。

我的解决方案是编写一个小型 Java 程序,该程序使用缓冲读取器将文件读入字符串,随后将其拆分为行,并保存到新文件中。

对处理这个有什么建议吗?缓冲阅读器能否将其读入常规字符串?我做错了吗?

【问题讨论】:

BufferedReader 应该能够读取数据。 我会使用StringBuilder 实际上,如果性能成为问题,我会分块处理文件,而不是将其全部放入 StringStringBuilder 中,否则我会将其全部加载到 StringBuilder 中。跨度> 一个聪明的解决方案是使用输入和输出流,避免将整个文件读入内存。 @brso05 如何将文件拆分成块? 【参考方案1】:

是的。使用缓冲阅读器。

计算出指令的最大大小并创建该大小的 char[]。然后执行以下操作:

 reader.read(charArray, 0, 5);

 // parse the header

 reader.read(charArray, 0, lengthOfInstruction);

 String instruction = new String(charArray, 0, lengthOfInstruction);

 // do stuff with the instruction

你把它放在一个while循环中,当文件结束时终止。

这可能不是最高效的运行时,但它可能已经足够好并且足够简单以开始工作。

【讨论】:

我最终几乎完全做到了这一点。

以上是关于从文件中读取大(450000+ 字符)字符串的主要内容,如果未能解决你的问题,请参考以下文章

将大字符串写入文件的最佳方法

read(),readline(),readlines()区别与用法

从标准输入读取字符串,将读取的内容连接成一个大字符串

从大文件中计算字符长度

如何处理大字符串和有限的内存

如何从大字符串中一次打印 20 行?