this a typical directory problemwhen there are diretories inside other directory, you need to use iteration function to help find all the files, 
if there is a subdirectory, then create a subdirectory under src2

解决方案 »

  1.   

    while ((c = fis.read()) != -1) 我也看了你的程序,我想是你本身程序设计的问题,我现在查查文章,看有没有这个方面的资料!望多多讨论;
    -------------------------qq:6117340
      

  2.   

    Fun(整个目录){
      if(文件){
       copy 
      }else{ 
       mkdir;
       Fun(子目录);  
      }
      
    }
      

  3.   

    FileNames[i]是个字符串呀。我没发得到它是不是目录这个属性。怎么写呀?上例在写之前,读目录都是提示拒绝访问
      

  4.   

    这个问题需要用到递归算法,我将你的程序修改后,如下:
    public class FileTest {
       String sourceDir = new String("C:/test/src/");
       String objectDir = new String("C:/test/src2/");
       public static void main(String[] args) {
            new FileTest().run();
       }
       public void run (){
          copyDir(sourceDir, objectDir);
       }   private void copyDir(String oriDirSource, String oriDirObject){        java.io.File mydir = new java.io.File(oriDirSource);
            String FileNames[] = mydir.list();
            System.out.println(FileNames);
            for (int i = 0; i < FileNames.length; i++) {
                System.out.println(FileNames[i]);
                System.out.println("-----------------------------");
                try {                // +++++++ added code
                    java.io.File fileSource = new java.io.File(oriDirSource+FileNames[i]);
                    if(fileSource.isDirectory()) {
                        java.io.File fileObject = new java.io.File(oriDirObject+FileNames[i]);
                        fileObject.mkdir();
                        copyDir(oriDirSource+FileNames[i]+"/", oriDirObject+FileNames[i]+"/");
                    }else {                    java.io.FileInputStream fis = new java.io.FileInputStream(oriDirSource + FileNames[i]);
                        java.io.FileOutputStream fos = new java.io.FileOutputStream(oriDirObject + FileNames[i]);                    // +++++++ added code
                        int c = 0;
                        while ((c = fis.read()) != -1)
                            fos.write(c);                  }
                    }
                catch (java.io.IOException ioe) {
                    System.out.println(ioe.toString());
                }
            }   }
    }
      

  5.   

    你跟我写的一模一样:
    /**
     * @version 1.20 21 Aug 1997
     * @author Cay Horstmann
     */
    public class FileTest {
        public static void main(String[] args) {  
         FileTest ft = new FileTest();
            ft.copyFiles("C:/src/", "C:/src2/");        
        }
       
        public void copyFiles (String sSource, String sTarget) {
             java.io.File mydir = new java.io.File(sSource);
             java.io.File FileNames[] = mydir.listFiles();
             for (int i = 0; i < FileNames.length; i++) {
                 System.out.println(FileNames[i].getName());
                 System.out.println("-----------------------------");
                 if (!FileNames[i].isDirectory()) {
                     try {
                         java.io.FileInputStream fis = new java.io.FileInputStream(sSource + FileNames[i].getName());      
                         java.io.FileOutputStream fos = new java.io.FileOutputStream(sTarget + FileNames[i].getName());  
                         int c = 0;
                         while ((c = fis.read()) != -1) 
                             fos.write(c);                     
                         }
                     catch (java.io.IOException ioe) {
                         System.out.println(ioe.toString());
                     }
                 }   
                 else {
                     /* create a new directory under the earliest directory. */
                     java.io.File subDir = new java.io.File(sTarget + FileNames[i].getName() + "/");
                     subDir.mkdir();
                     
                     copyFiles(sSource + FileNames[i].getName() + "/", sTarget + FileNames[i].getName() + "/");
                 }
             }     
        }
    }
    给各位分了