编写一个java程序 
读取一个文件夹中所有文本文件,     如果在文本文件中找到指定的多个文字(并显示如‘c’出现的次数,‘s’出现的次数,‘d’出现的次数和‘s’出现的次数)   ,就将此文件剪切至其他文件夹 文本文件中的内容都是中文 

解决方案 »

  1.   


    /**
     * 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();//开始处理
    }}