转自 Java面试题全集(上)(http://blog.csdn.net/jackfrued/article/details/44921941/ )第70题
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public final class CountStringUtil {
// 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象(绝对好习惯),且类定义为final型,不允许被继承
private CountStringUtil(){}
/**
* 统计给定文件中给定字符串的出现次数
*
* @param filename 文件名
* @param word 字符串
* @return 字符串在文件中出现的次数
*/
public static int countStringInFile(String filename , String word){
int counter = 0;
try{
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String line = null;
while((line = br.readLine()) != null){
int index = -1;
while(line.length() >= word.length() && (index = line.indexOf(word)) >= 0){
counter++;
line = line.substring(index + word.length());
}
}
}catch(IOException e){
e.printStackTrace();
}
return counter;
}
public static int countString2(String filename , String word){
int counter = 0;
try{
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String line = null;
int l = word.length();
while((line = br.readLine()) != null){
for(int i = 0 ; i <= line.length() - l; i++){
if(line.substring(i, i + l).equals(word)){
counter++;
}
}
}
}catch(IOException e){
e.printStackTrace();
}
return counter;
}
public static void main(String[] args) {
String filename = "D:\\support\\countword.txt";
String word = "zhuo";
System.out.println(CountStringUtil.countStringInFile(filename, word));
}
}
int counter = 0;
try{
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String line = null;
int l = word.length();
while((line = br.readLine()) != null){
for(int i = 0 ; i <= line.length() - l; i++){
if(line.substring(i, i + l).equals(word)){
counter++;
}
}
}
}catch(IOException e){
e.printStackTrace();
}
return counter;
}
public static void main(String[] args) {
String filename = "D:\\support\\countword.txt";
String word = "zhuo";
System.out.println(CountStringUtil.countStringInFile(filename, word));
}
}