编写一个java程序
读取一个文件夹中所有文本文件, 如果在文本文件中找到指定的多个文字(并显示如‘c’出现的次数,‘s’出现的次数,‘d’出现的次数和‘s’出现的次数) ,就将此文件剪切至其他文件夹 文本文件中的内容都是中文
读取一个文件夹中所有文本文件, 如果在文本文件中找到指定的多个文字(并显示如‘c’出现的次数,‘s’出现的次数,‘d’出现的次数和‘s’出现的次数) ,就将此文件剪切至其他文件夹 文本文件中的内容都是中文
/**
* project_name: Test
* package_name: csdn_Test_20071126
* package_declaration: package csdn_Test_20071126;
* filename: FindStringFromFile.java
* author: yuhaiming
* date: 2007-12-9
*/
package csdn_Test_20071126;
import java.io.*;public class FindStringFromFile {
private static char ch[] = {'s','h'};//需要统计数量的字符
private static String findString = "static";//需要检索的字符串
private static int[] count = new int[ch.length];//统计字符出现次数的数组
/**
* 主处理函数
*/
public static void disposal(){
try{
//文件目录
File dirFile = new File("D:\\filetest");
//得到该目录下的所有文件列表
File fileList[] = dirFile.listFiles();
//读取器
BufferedReader reader ;
//读取行
String read_line ="";
//移文件标志
boolean flag = false;
for(int i=0;i<fileList.length;i++){
//只处理文件
if(fileList[i].isFile()){
flag = false;
System.out.println("开始处理:"+fileList[i].getName()+"文件");
FileInputStream fileInput= new FileInputStream(fileList[i].getPath());
reader = new BufferedReader(new InputStreamReader(fileInput));
read_line = reader.readLine();
while(read_line!=null){
//统计字符
countNum(read_line,ch);
//判断字符串是否在该文件中
if(read_line.indexOf(findString)>-1){
flag = true;
}
read_line=reader.readLine();
}
//关闭输入流
fileInput.close();
//显示一下统计结果
display(ch,count,fileList[i]);
if(removeFile(fileList[i],flag)){
System.out.println(fileList[i].getName()+"备份成功!");
}
System.out.println("处理结束:"+fileList[i].getName()+"文件");
}
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 显示统计结果
* @param ch
* @param count
*/
public static void display(char[] ch,int[] curcount,File file){
for(int i=0;i<ch.length;i++){
System.out.println("字符"+ch[i]+"在文件"+file.getName()+"中出现的次数是"+curcount[i]+"次");
//为了统计下一个文件作准备,将当前统计好的数组清零
count[i]=0;
}
}
/**
* 统计字符数组在文件中出现的个数
* @param str
* @param ch
*/
public static void countNum(String str ,char[] ch){
char curch = ' ';
//循环字符串的每一个字符
for(int i=0;i<str.length();i++){
//得到当前字符
curch = str.charAt(i);
//需要统计的字符相加操作
for(int j=0;j<ch.length;j++){
if(curch==ch[j]){
count[j]++;
}
}
}
}
/**
* 备份文件操作
* @param oldFile
* @param flag
* @return
*/
public static boolean removeFile(File oldFile,boolean flag){
boolean returnFlag = false;
if(flag){
try{
//移文件到当前操作目录下的子文件中,renameTo函数只能操作当前目录下,如果不在同一目录,则移文件操作失败
String newFileName = "D:\\filetest\\back\\"+oldFile.getName();
if(oldFile.renameTo(new File(newFileName))){
returnFlag = true;
}
}catch(Exception e){
e.printStackTrace();
}
}
return returnFlag;
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
disposal();//开始处理
}}