如何计算DOS文本文件中的字符,包括行结尾?

时间:2016-09-11 03:21:45

标签: java

我正在尝试计算文本文件中的字符数。但是,我只计算字母和空格,而不是行的末尾\ r \ n。我怎么能包括它? 下面的函数计算文件中的行数,单词和字符数。

    public static void Count(String FILENAME, int n) throws IOException {
    inFile = new BufferedReader(new FileReader(FILENAME));
    String currentLine; //= inFile.readLine();
    while ((currentLine=inFile.readLine()) != null) {
        lines[n]++;
        bytes[n]+=currentLine.length();
        bytes[n]++;
        String[] WORDS = currentLine.split(" "); // split the string into sub-string by whitespace
        // to separate each words and store them into an array
        words[n] = words[n] + WORDS.length;
        if (currentLine.length()==0)
            words[n]--;

    }

}

2 个答案:

答案 0 :(得分:1)

一种简单的方法是利用Character Streams而不是Line-oriented Streams,因为每次调用readLine()时字符流都会给你一个字符。



public static void Count(String FILENAME, int n) throws IOException {
    inFile = new FileReader(FILENAME);
    char currentCharacter;
    int numCharacters = 0;

    String currentLine = "";
    while ((currentCharacter=inFile.readLine()) != null){
      if(currentCharacter == '\n')
      {
         lines[n]++;
         bytes[n]+=currentLine.length();
         bytes[n]++;
         String[] WORDS = currentLine.split(" "); 
         words[n] = words[n] + WORDS.length;
         if (currentLine.length()==0)
            words[n]--;
      }
      currentCharacter=inFile.readLine();
      currentLine += currentCharacter;
      numCharacters ++;
   }




然后总和将存储在numCharacters中。为了保持计算行和字节等的能力,你可以在循环之前声明一个String行,并在循环中将每个字符连接到它的末尾。一旦你点击\ n,你知道你在行变量中有一行。然后你可以将line [n]增加1,通过line.length()等增加bytes [n]。

信息来源:https://docs.oracle.com/javase/tutorial/essential/io/charstreams.html

答案 1 :(得分:0)

用于计数\ r \ n使用read()方法。

readLine()方法读取一行文本。一条线被认为是由换行符('\ n'),回车符('\ r')或回车符后面的任何一个终止。

返回:     包含行内容的String,不包括任何行终止字符;如果已到达流的末尾,则为null。