使用伪代码 实现  遍历一个目录及其子目录下所有.txt文件,统计每个文件中的单词的个数,出现空格识为一个单词。比如1.txt 
txt  world1 word2 word1 world2
2.txt
txt  world1 word2 word1 world2

txt 2
world 4
word2 4

解决方案 »

  1.   

    http://blog.csdn.net/wfqqwer5213/archive/2010/10/04/5921688.aspx
      

  2.   

    明天有时间再看看 先标记一个
    现在已经把一个目录及其子目录下所有.txt文件 的内容放入数组allcontent中了import java.io.File;
    import java.io.*;
     class FileManager {
        String dir = "";
        String temp = "";
        public String[] serachFiles(String dir) 
    {
            File root = new File(dir);
            File[] filesOrDirs = root.listFiles();
            String[] result = new String[filesOrDirs.length];        for (int i = 0; i < filesOrDirs.length; i++) 
    {
                if (filesOrDirs[i].isDirectory()) 
    {
                    serachFiles(filesOrDirs[i].getAbsolutePath());
                } else 
    {
                    result[i] = filesOrDirs[i].getName();
    String fileName=filesOrDirs[i].getName();
    if(fileName.endsWith("txt")) 
                       temp += filesOrDirs[i].getName() + ",,,";
                }
            }
            return temp.split(",,,");
        }
        public static String getString(String path)
    {
       String content;
       BufferedInputStream reader = null;
           try
       {
               reader = new BufferedInputStream(new FileInputStream(path));
               byte[] b = new byte[reader.available()];
               reader.read(b);
               content = new String(b);
       return content;
           } 
           catch (IOException e) 
       {
             e.printStackTrace();
     return "";
           }
    }
        public static void main(String[] args) {
            FileManager fm = new FileManager();
            String[] files = fm.serachFiles("D:/TestDir");
    String[] allcontent=new String[files.length];
            for (int i = 0; i < files.length; i++) {
    allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
                System.out.println(allcontent[i]);
                System.out.println(files[i]);
            }

        }
    }
      

  3.   

    8楼的兄弟不错,依然实现了需求。
    可以优化的是先把遍历出来的txt文件放在list中,而不是存成一个String再把文件名分隔出来。
    最后遍历容器,一个一个的解析单词个数,愚见勿见笑
      

  4.   

    稍微改进了下  但是统计最后一个单词的时候有点问题import java.io.File;
    import java.io.*;
    import java.util.*;
     class FileManager {
        String dir = "";
        String temp = "";
        public String[] serachFiles(String dir) 
    {
            File root = new File(dir);
            File[] filesOrDirs = root.listFiles();
            String[] result = new String[filesOrDirs.length];        for (int i = 0; i < filesOrDirs.length; i++) 
    {
                if (filesOrDirs[i].isDirectory()) 
    {
                    serachFiles(filesOrDirs[i].getAbsolutePath());
                } else 
    {
                    result[i] = filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
    String fileName=filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
    //System.out.println(fileName);
    if(fileName.endsWith("txt")) 
                       temp += fileName + ",,,";
                }
            }
            return temp.split(",,,");
        }
        public static String getString(String path)
    {
       String content;
       BufferedInputStream reader = null;
           try
       {
               reader = new BufferedInputStream(new FileInputStream(path));
               byte[] b = new byte[reader.available()];
               reader.read(b);
               content = new String(b);
       return content;
           } 
           catch (IOException e) 
       {
             e.printStackTrace();
     System.out.println("KKKK");
     return "";
           }
    }
        public static void main(String[] args) {
            FileManager fm = new FileManager();
            String[] files = fm.serachFiles("D:/TestDir");
    String[] allcontent=new String[files.length];
    String content="";
            for (int i = 0; i < files.length; i++) {
    allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
    content += allcontent[i] + " ";  
            }
    //System.out.println(content);
    String[] arrContent =content.split(" ");
    List<String> arrContentList = new ArrayList<String>(Arrays.asList(arrContent));
            System.out.println(arrContentList.toString());
    while(true)
    {   
         Object[] temparr = arrContentList.toArray();
     if(temparr.length==0) break;
     //System.out.println(temparr.length);
     int count=0;
     String first ="";
     for(int i=0 ;i<arrContentList.size(); i++ )
     { 
     first =(String)temparr[0];
     if(arrContentList.indexOf(temparr[0])!=-1)
       {
     arrContentList.remove(temparr[0]);
     count++;
       }
     }
     //System.out.println(arrContentList);
     System.out.println(first +" : "+count);
    }

        }
    }
      

  5.   

    找到问题了import java.io.File;
    import java.io.*;
    import java.util.*;
     class FileManager {
        String dir = "";
        String temp = "";
        public String[] serachFiles(String dir) 
    {
            File root = new File(dir);
            File[] filesOrDirs = root.listFiles();
            String[] result = new String[filesOrDirs.length];        for (int i = 0; i < filesOrDirs.length; i++) 
    {
                if (filesOrDirs[i].isDirectory()) 
    {
                    serachFiles(filesOrDirs[i].getAbsolutePath());
                } else 
    {
                    result[i] = filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
    String fileName=filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
    //System.out.println(fileName);
    if(fileName.endsWith("txt")) 
                       temp += fileName + ",,,";
                }
            }
            return temp.split(",,,");
        }
        public static String getString(String path)
    {
       String content;
       BufferedInputStream reader = null;
           try
       {
               reader = new BufferedInputStream(new FileInputStream(path));
               byte[] b = new byte[reader.available()];
               reader.read(b);
               content = new String(b);
       return content;
           } 
           catch (IOException e) 
       {
             e.printStackTrace();
     System.out.println("KKKK");
     return "";
           }
    }
        public static void main(String[] args) {
            FileManager fm = new FileManager();
            String[] files = fm.serachFiles("D:/TestDir");
    String[] allcontent=new String[files.length];
    String content="";
            for (int i = 0; i < files.length; i++) {
    allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
    content += allcontent[i] + " ";  
            }
    //System.out.println(content);
    String[] arrContent =content.split(" ");
    List<String> arrContentList = new ArrayList<String>(Arrays.asList(arrContent));
            System.out.println(arrContentList.toString());
    while(true)
    {   
         Object[] temparr = arrContentList.toArray();
     if(temparr.length==0) break;
     //System.out.println(temparr.length);
     int count=0;
     String first ="";
     for(int i=0 ;i<arrContent.length; i++ )
     { 
    // first =(String)temparr[0];
     if(arrContentList.indexOf(temparr[0])!=-1)
       {
     arrContentList.remove(temparr[0]);
     count++;
       }
     }
    // System.out.println(arrContentList);
     System.out.println(temparr[0] +" : "+count);
    }

        }
    }
      

  6.   

    楼上的代码问题很多。相信面试官想知道的是思路
    首先得判断File是目录还是文件
    在目录下的所有.txt
    file.ListFiles(FileFilter filter);
    filter过滤出来所有的.txt文件
    然后再逐个读取。合并。判断。
      

  7.   

    我们都知道思路是 找到目录下所有.txt文件啊
    然后再读出来。
    能不能给个详细点的伪代码啊 不要求实现。