【发布时间】:2013-10-05 11:36:09
【问题描述】:
我想收到一些关于我要用 Java 解决的小问题的建议。
我有一个格式如下的文件:
@
some text
some text
some text
@
some text
some text
some text
@
some text
some text
some text
...等等。
我需要读取该文本文件的下一个块,然后创建一个包含读取块的 InputStream 对象并将 InputStream 对象传递给解析器。我必须对文本文件中的每个块重复这些操作。每个块都写在以@开头的行之间。问题是使用解析器解析@标签之间的每个部分,该解析器应该从 InputStream 读取每个块。
文本文件可能很大,所以我想获得好的性能。
我该如何解决这个问题?
我想过做这样的事情:
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
Scanner scanner = new Scanner(bufferedReader);
scanner.useDelimiter("@");
List<ParsedChunk> parsedChunks = new ArrayList<ParsedChunk>();
ChunkParser parser = new ChunkParser();
while(scanner.hasNext())
{
String text = scanner.next();
InputStream inputStream = new ByteArrayInputStream(text.getBytes("UTF-8"));
ParsedChunk parsedChunk = parser.parse(inputStream);
parsedChunks.add(parsedChunk);
inputStream.close();
}
scanner.close();
但我不确定这是否是一个好方法。
谢谢。
【问题讨论】:
-
很难理解文件的格式到底是什么。此外,如果您希望在帖子中使用正确的格式标记。
-
在开始优化之前,您应该衡量问题所在。在许多系统中,限制事实是读取文件和分割成行所花费的时间。在这种情况下,您可能会尝试加快速度。
-
投反对票的人是否需要从他们的钱包中支付理由?为什么他们不发表评论?
-
我已经重写了我的帖子。现在应该更容易理解了。
标签: java file parsing java.util.scanner bufferedreader