我有一个60 MB的文本文件,我的程序需要通过它来搜索特定的ID并提取一些相关文本。我需要重复这个过程200多次。最初,我使用循环遍历文件的每一行,查找ID并提取相关文本,但这太慢了(约2分钟)。因此,现在我正在寻找一种方法将整个文件加载到内存中,然后从那里搜索我的ID和相关文本;我想这应该比访问硬盘200多次要快。所以我编写了以下代码来将文件加载到内存中:
public String createLocalFile(String path)
{
String text = "";
try
{
FileReader fileReader = new FileReader( path );
BufferedReader reader = new BufferedReader( fileReader );
String currentLine = "";
while( (currentLine = reader.readLine() ) != null )
{
text += currentLine;
System.out.println( currentLine );
}
}
catch(IOException ex)
{
System.out.println(ex.getMessage());
}
return text;
}
很遗憾,将文件的文本保存到字符串变量中需要非常长的时间。有没有更快的加载文件的方法?或者有没有更好的方法来完成相同的任务?感谢任何帮助。
编辑:这是文件链接https://github.com/MVZSEQ/denovoTranscriptomeMarkerDevelopment/blob/master/Homo_sapiens.GRCh38.pep.all.fa
典型的行如下:
>ENSP00000471873 pep:putative chromosome:GRCh38:19:49496434:49499689:1 gene:ENSG00000142534 transcript:ENST00000594493 gene_biotype:protein_coding transcript_biotype:protein_coding\
MKMQRTIVIRRDYLHYIRKYNRFEKRHKNMSVHLSPCFRDVQIGDIVTVGECRPLSKTVR\
FNVLKVTKAAGTKKQFQKF\
在这里,ENSP00000471873
是ID,我要提取的文本是
MKMQRTIVIRRDYLHYIRKYNRFEKRHKNMSVHLSPCFRDVQIGDIVTVGECRPLSKTVR\
FNVLKVTKAAGTKKQFQKF\
StringBuilder
替代字符串拼接(也许编译器已经自动将你的代码转换为使用它)。 - Mick Mnemonic