小弟想实现下面的功能.某个文件夹下面有200个文件夹,这两百个文件夹下又放着数量不等的文本文件。我想把这些文件夹下的文件遍历一遍,将它们copy到一个文件夹下,从1开始对文件命名,请大虾给写一下,急用!谢谢!
例如:
输入:
文件夹A下有文件夹1,文件夹2,文件夹3.文件夹1下有1.html,2.html,3.html.文件夹2下有1.html,2.html.文件夹3下有1.html.
输出:
创建一个新文件夹B,将A下面所有的文件按序copy到B中,1.html,2.html,3.html,4.html,5.html,6.html,这里的4.html就是文件夹2下面的1.html,5.html就是文件夹2下面的2.html,6.html就是文件夹3下面的1.html.

解决方案 »

  1.   

    这不是很简单嘛File file = new File("file Pathname");file.listFiles(a Filter)用得到的文件名创建文件对象,然后看看是不是Dir,是的话,就遍历它好了。不是就copy过去。然后命名的话,你可以直接调用方法了。
      

  2.   

    import java.util.Date;
    import java.text.*;
    import java.io.IOException;
    import java.io.File;
    import java.util.List;
    import java.util.ArrayList;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;public class Test {
      private List files=new ArrayList();  public static void main(String args[]) {
        //得到e:\\abc目录下所有的文件
        File file =new File("e:\\abc");    Test test=new Test();
        test.getFile(file);
        System.out.println(test.files.size());    //把所有文件拷贝到这个目录下
        String path="c:\\my\\";
        File dir=new File(path);
        if(!dir.exists()){
          dir.mkdirs();
        }
        //开始复制
        try {
          for (int i = 0; i < test.files.size(); i++) {
            //把旧文件读进内存
            File oldFile = (File) test.files.get(i);
            byte b[] = new byte[ (int) oldFile.length()];
            FileInputStream in = new FileInputStream(oldFile);
            in.read(b);
            //创建并把内容写入新文件
            FileOutputStream out = new FileOutputStream(path + i + ".html");
            out.write(b);
          }
        }
        catch (IOException ex) {
          ex.printStackTrace();
        }
      }  public File getFile(File file) {
        File result=null;
        if(file.isDirectory()){
          System.out.println("目录");
          File f[]=file.listFiles();
          for(int i=0;i<f.length;i++){
            File ff=this.getFile(f[i]);
            if(ff!=null){
              files.add(ff);
            }
          }
        }else{
          System.out.println("文件");
          result=file;
        }
        return result;
      }
    }