从行索引处的文件中读取单词

时间:2015-04-16 07:33:36

标签: java file

从知道线索引的文件中读取单词的最佳方法是什么? 我想读取文件中的每个单词并检查是否只包含数字。如果我不打印单词索引和行索引。

我目前正在使用此功能,但我想知道是否有办法在没有2个循环的情况下进行此操作。

private static void validateNumber ( String fileName )
{

    try ( BufferedReader reader = new BufferedReader ( new FileReader ( fileName ) ) )
    {

        String line = null;
        int lineIndex = -1;

        while ( ( line = reader.readLine ( ) ) != null )
        {
            lineIndex++;

            String [ ] words = line.trim ( ).split ( "[\\s]+" );

            for ( int i = 0; i < words.length; i++ )
            {
                System.out.println("Word " + i " at line " + lineIndex); 
            }

        }

    } catch ( FileNotFoundException e )
    {
        e.printStackTrace ( );
    } catch ( IOException e )
    {
        e.printStackTrace ( );
    }

}

2 个答案:

答案 0 :(得分:1)

如果您不想使用2个循环,您可以阅读整个文本,然后分成&#34; \ n&#34;字符:String[] lines = text.split("\n"); 现在你有一个每行的数组,你可以通过索引数组来检索任何行。例如,第5行是lines[4]

答案 1 :(得分:0)

  

知道行索引从文件中读取单词的最佳方法是什么?

从Java 8开始,您可以使用Stream API:

long lineIndex = 3; // e.g.: fourth line

String line = Files.lines(Paths.get("myfile.txt"))
                    .skip(lineIndex)
                    .findFirst()
                    .get();

但是既然你需要检查每一行而你想要打印行号,那么while循环是你最好的选择,因为Java 8流没有索引(找出为什么here) 。