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

Java 从文件中读取大字符串(450000个字符),java,string,large-data,Java,String,Large Data,所以,我要处理的是集成遗留系统。它生成一个大文本文件,以一个大字符串打印指令。非常大的绳子。我们说的是45万个字符或更多 我需要把它分成几行,每条指令一行。每条指令由一个五位代码分隔,其中代码包含下一条指令中的字符数 我的解决方案是编写一个小型java程序,它使用缓冲读取器将文件读入字符串,然后将其拆分为行,并保存到新文件中 处理这个问题有什么建议吗?缓冲读取器是否能够将其读入常规字符串?我做错了吗?是的。使用缓冲读取器 计算出指令的最大大小,并创建该大小的char[]。然后做一些类似的事情:

所以,我要处理的是集成遗留系统。它生成一个大文本文件,以一个大字符串打印指令。非常大的绳子。我们说的是45万个字符或更多

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

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


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

是的。使用缓冲读取器

计算出指令的最大大小,并创建该大小的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循环中,该循环在文件结束时终止


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

BufferedReader
应该能够读取数据。我会使用
StringBuilder
实际上,我会将文件分块处理,而不是将其全部放入
String
StringBuilder
,如果性能成为问题,否则我会将其全部加载到
StringBuilder
中。一个聪明的解决方案是使用输入和输出流,并避免将整个文件读入内存。@brso05如何将文件分割成块?我最终几乎完全做到了这一点。