我正在尝试计算文本文件中的字符数。但是,我只计算字母和空格,而不是行的末尾\ 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]--;
}
}
答案 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。