【发布时间】:2016-04-28 11:05:32
【问题描述】:
我正在尝试计算某个字符串在文本文件 (.txt) 中出现的次数,到目前为止,我让 FileReader 工作(它读取文件,我可以输出文件中的文本到控制台)。我想要知道的是检查文本文件中是否存在字符串(由用户输入)。我到目前为止是这样的:
import java.io.*;
import java.util.Scanner;
public class Assignment2 {
String fileName = "test.txt";
String line = null;
int counter = 0;
public String getUserInput() {
String userInput;
Scanner userInputScanner = new Scanner(System.in);
userInput = userInputScanner.nextLine();
return userInput;
}
public String returnUserInput() {
String userInput = getUserInput();
return userInput;
}
public void readFile() {
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
while (line.indexOf(word, indexOfWord) != -1) {
indexOfWord += word.length();
counter += 1;
}
}
bufferedReader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Assignment2 test = new Assignment2();
test.readFile();
}
}
发生的事情是我无法遍历文件,当我使用 for 循环运行程序时,它卡住了(?),它只是继续运行而没有错误,但它什么也没做。
我知道我的问题在于 for 循环(line.length() 不起作用,因为缓冲的阅读器一次读取一行......我真正想要的是获取文件)。我也无法检查用户输入(我想忽略字母的大小写,但我不能用 .contains() 做到这一点,而且我想不出另一种方法来检查该行是否包含用户输入) .
另外,我的过程是否正确,或者我这样做的方式效率不高?我必须检查一个 3000 字的文档。
【问题讨论】:
-
您的问题是什么?问题是什么?请编辑您的问题以包含确切的错误和确切的预期行为。
-
对我来说听起来像是一个家庭作业问题。你不应该在这里直接问这样的问题。如果只有 3000 字,您可以简单地将整个文件读入内存并连接行(StringBuilder),然后用 for 循环计算出现次数。
-
如果您正在寻找其他方法,您可以搜索 SO 以了解有关 counting the occurence of a particular String in a file 的其他问题。
标签: java search filereader java-io