使用java在文件中查找令牌
我正试图读取一个文本文件。我必须在该文件中找到一个特定的标记“STUDENT | ITEMS |”。然后我必须放弃该文件中接下来的八行,并读取第九行以获得所需的输入。现在我有些困惑。要使用哪一个来读取文件?扫描仪类还是缓冲区读取器?哪一个在性能问题上更好?我还看到了datastream和inputstream的使用。所以我有点困惑。 那么使用什么来查找令牌呢?正则表达式解析还是令牌解析?我是使用split()拆分一行,还是在解析类似以下内容的行时使用nextToken()拆分一行:使用java在文件中查找令牌,java,regex,parsing,Java,Regex,Parsing,我正试图读取一个文本文件。我必须在该文件中找到一个特定的标记“STUDENT | ITEMS |”。然后我必须放弃该文件中接下来的八行,并读取第九行以获得所需的输入。现在我有些困惑。要使用哪一个来读取文件?扫描仪类还是缓冲区读取器?哪一个在性能问题上更好?我还看到了datastream和inputstream的使用。所以我有点困惑。 那么使用什么来查找令牌呢?正则表达式解析还是令牌解析?我是使用split()拆分一行,还是在解析类似以下内容的行时使用nextToken()拆分一行: “ID |
“ID | Name | value |”以获取ID名称和值。请提供帮助。使用a,包装成an(用于正确编码),包装成a(用于方便的方法,例如),然后可以检查
字符串是否包含另一个字符串使用FileUtils.readLines(文件f)
获取文件中要迭代的行的列表。然后只需使用line.contains(“STUDENT | ITEMS |”)
来检测匹配项。跳过循环中接下来的8行。
(来自commons io的FileUtils)因为您似乎对java中的数据输入缺乏经验,所以最好对此进行一点解释
FileInputStream从文件读入数据流。当您为文件名创建一个文件时,它将为您打开该文件
DataStreamReader将读取FileInputStream并处理编码,处理输入端,并在读取时为您提供字符
BufferedReader有助于提高效率和方便性。它帮助处理块读取并将每个块存储在其缓冲区中,而不是逐字节读取(开销很高)。这对您来说是不可见的,但有助于提高性能。它还为您提供了逐行阅读的功能,这将对您的任务有很大帮助
这就是为什么要将文件包装在不同的读卡器层中。我建议您看看如何使用ArrayLists(java.util),因为它们可以自动调整数组的大小,并且可以让您轻松地逐行存储行(作为字符串)。良好的未来实践,易于使用
就查找令牌而言,您已经阅读了您的行(逐行或存储)。您可以使用String.contains检查字符串是否有您的令牌,或者使用indexOf查找字符串中的特定位置。不管是哪种方式,从那时起,它只是跳过了正确的行数,并将第9行发送到所需的函数您不知道如何编写这个微不足道的程序,但您确实关心“性能问题”?这就像有人问:“我不知道怎么做意大利面,有人能帮忙吗?顺便问一下,我应该使用电烤箱还是燃气烤箱,哪一个更有效?”