使用java在文件中查找令牌

时间:2011-03-25 08:23:46

标签: java regex parsing

我正在尝试阅读文本文件。我必须找到一个特殊的标记“STUDENT | ITEMS |”在那个文件中。然后我必须丢弃该文件中的下八行并读取第9行以获得所需的输入。现在我有些困惑。哪一个用来读取文件?扫描仪类或缓冲读卡器?哪一个在性能问题上更好?我也看到使用datastream和inputstream。所以我有点困惑。 然后用什么来查找令牌?正则表达式解析或令牌解析?我将使用split()分割一行,或者在解析这样的行时使用nextToken():  “ID |名称|值|”获取id名称和值。请帮忙。

3 个答案:

答案 0 :(得分:1)

使用FileInputStream包装到InputStreamReader(用于正确的编码),包裹在BufferedReader中(为了方便方法,例如readLine()),然后{ {3}}可以检查String是否包含其他String

答案 1 :(得分:1)

使用FileUtils.readLines(File f)获取要迭代的文件中的行列表。然后只需使用line.contains("STUDENT | ITEMS |")来检测您的匹配。跳过循环中的后8行。 (来自commons-io的FileUtils)

答案 2 :(得分:1)

由于您似乎对java中的数据输入缺乏经验,因此最好先解释一下

FileInputStream从文件读取数据流。当您为文件名创建一个时,它将为您打开该文件。

DataStreamReader将读取FileInputStream并处理编码,处理输入端并在读取时为您提供字符。

BufferedReader有助于提高效率和便利性。它不是逐字节读取(具有高开销),而是有助于处理块读取并将每个块存储在其缓冲区中。这对您来说是不可见的,但有助于提高性能。它还为您提供逐行阅读的功能,这将帮助您完成任务。

这就是你将文件包装在不同层次的读者中的原因。我建议你看一下如何使用ArrayLists(java.util),因为它们可以自我调整数组大小,并且可以让你轻松地逐行存储这些行(作为字符串)。未来的良好实践,易于使用。

就找到令牌而言,你已经读过你的行(逐行或存储)。您可以使用String.contains检查字符串是否包含您的令牌,或者您可以使用indexOf查找字符串中的特定位置。无论哪种方式,从那一点开始,它只是跳过正确的行数并将第9行发送到您想要的功能