InputStream读取文件和计数行/单词

时间:2016-10-19 21:37:23

标签: java

我正在开展一个项目,我正在努力计算

1)单词数量。 2)文本文件中的行数。

我的问题是我无法弄清楚如何检测文件何时进入下一行,这样我就可以正确地增加行数。基本上如果next不是空格增量字,如果next是新行,则增加行。我该怎么做?谢谢!

public static void readFile(Scanner f) {
  int words = 0;
  int lines = 0;
  while (f.hasNext()) {
     if (f.next().equals("\n")) {
        lines++;
     } else if (!(f.next().equals(" "))) {
        words++;
     }
  }

  System.out.println("Total number of words: " + words);
  System.out.println("Total number of lines: " + lines);
}

4 个答案:

答案 0 :(得分:0)

你必须使用InputStream吗? (是)最好使用传入了InputStreamReader的BufferedReader,这样你就可以逐行读取文件并逐步增加。

numLines = 0;
    try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
        String line;
        while ((line = br.readLine()) != null) 
        {
           numLines++;
           // process the line.
        }
    }

然后计算单词,使用查找空格的正则表达式拆分字符串。然后myStringArray = MyString.Split(MyRegexPattern);将返回所有单词的String[]。然后你要做的就是numWords += myStringArray.length();

答案 1 :(得分:0)

试试这个:

this

答案 2 :(得分:0)

请尝试以下操作:

public static void readFile(Scanner f) {
  int words = 0;
  int lines = 0;
  while (f.hasNextLine()) {
         String line = f.nextLine();
         String[] arr = line.split("\\s");   
         words += arr.length;
         lines++;

  }

  System.out.println("Total number of words: " + words);
  System.out.println("Total number of lines: " + lines);
}

答案 3 :(得分:0)

您可以使用InputStreamReader创建一个bufferedreader,它可以逐行读取文件:

int amountOfLines = 0;          
try {BufferedReader br = new   BufferedReader(new InputStreamReader(inputStream))} catch (Exception e)  {e.printStackTrace();}
 String line; 
 while ((line = br.readLine()) != null{ 
     numLines++;
     // process the line. 
 } 

然后,您可以使用split(String)方法分隔每个部分