/**
 * 复制文件或者目录
 * @param srcFile:原始文件或目录
 * @param desFile:目标文件或目录
 * 
 */

public static void copyFile(File srcFile, File desFile)throws Exception {
RandomAccessFile srcSaf = null;
RandomAccessFile desSaf = null;

try {
// srcSaf = new RandomAccessFile(srcFile, "r");
//          desSaf = new RandomAccessFile(desFile, "rw");
/* 如果要复制的是文件夹,要先创建文件夹*/
if(srcFile.isDirectory()){
desFile.mkdir();
for(File sub : srcFile.listFiles()){
File newFile = new File(desFile, sub.getName());

copyFile(sub, newFile);
}
}
/* 文件的复制*/
srcSaf = new RandomAccessFile(srcFile, "r");
desSaf = new RandomAccessFile(desFile, "rw");

byte[] buf = new byte[1024*10];
int len = 0;
while((len = srcSaf.read(buf)) != -1){
desSaf.write(buf, 0, len);
}

} catch (FileNotFoundException e) {
throw e;
} finally{
srcSaf.close();
desSaf.close();
}
}如果是文件夹的复制,只能复制文件夹里的一个子项 什么问题  大神给看看

解决方案 »

  1.   


    是的 就是复制一个文件夹   这个文件夹里面也有东西的我代码都写出来了  但只能复制目录里面的一项 不知哪里错了 你这不等于没说吗我晕死,你复制了一项,当然只有一项啊,你要复制文件夹里面的所有东西,那就必须所有的东西都复制一遍,clear ?用递归
      

  2.   


    是的 就是复制一个文件夹   这个文件夹里面也有东西的我代码都写出来了  但只能复制目录里面的一项 不知哪里错了 你这不等于没说吗我晕死,你复制了一项,当然只有一项啊,你要复制文件夹里面的所有东西,那就必须所有的东西都复制一遍,clear ?用递归你好好看看我那不是递归吗?????????????
      

  3.   

    **
         * 复制文件或者目录
         * @param srcFile:原始文件或目录
         * @param desFile:目标文件或目录
         * 
         */
         
        public static void copyFile(File srcFile, File desFile)throws Exception {
            RandomAccessFile srcSaf = null;
            RandomAccessFile desSaf = null;
             
            try {
                /* 如果要复制的是文件夹,要先创建文件夹*/
                if(srcFile.isDirectory()){
                    desFile.mkdir();
                    for(File sub : srcFile.listFiles()){
                            File newFile = new File(desFile, sub.getName());
                             
                            copyFile(sub, newFile);
                    }
                }
                /* 文件的复制*/
                srcSaf = new RandomAccessFile(srcFile, "r");
                desSaf = new RandomAccessFile(desFile, "rw");
                 
                byte[] buf = new byte[1024*10];
                int len = 0;
                while((len = srcSaf.read(buf)) != -1){
                    desSaf.write(buf, 0, len);
                }
                 
            } catch (FileNotFoundException e) {
                throw e;
            } finally{
                srcSaf.close();
                desSaf.close();
            }
        }