黑马程序员技术交流社区

标题: 复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答 [打印本页]

作者: の放下执著    时间: 2014-4-25 00:30
标题: 复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答
复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答
作者: 展展    时间: 2014-4-25 11:46
利用递归可以实现,这个我之前写过了,翻出以前代码直接给你参考吧,希望能帮助到你
  1. import java.io.*;
  2. /*
  3. 复制文件夹

  4. */

  5. class  CopyFileDemo
  6. {
  7. public static void main(String[] args)
  8. {
  9.   File sour = new File("c:\\SF");
  10.   File targ = new File("e:\\copy");
  11.   targ.mkdir();
  12.   findFile(sour,targ);
  13. }
  14. public static void findFile(File sour,File targ)
  15. {
  16.   File[] files = sour.listFiles();
  17.   for (File file:files )
  18.   {
  19.    if(file.isDirectory())
  20.    {
  21.     String dir = file.getName();
  22.     File newFile = new File(targ+"\\"+dir);
  23.     newFile.mkdirs();
  24.     findFile(file,newFile);
  25.    }
  26.    else
  27.    {
  28.     try
  29.     {
  30.      String fileName = file.toString();
  31.      int index =fileName.lastIndexOf("\\");
  32.      fileName=fileName.substring(index);
  33.      copyFile(file,fileName,targ);
  34.     }
  35.     catch (Exception ex)
  36.     {
  37.      //e.printStackTrace();
  38.      throw new RuntimeException("文件复制失败!");
  39.     }
  40.    }
  41.   }
  42. }
  43. public static void copyFile(File sour,String name,File newFile)
  44. {
  45.   FileInputStream fis = null;
  46.   FileOutputStream fos = null;
  47.   try
  48.   {
  49.    fis = new FileInputStream(sour);
  50.    fos = new FileOutputStream(newFile+name);
  51.    System.out.println(sour+"::"+(newFile+name));
  52.    byte[] buf = new byte[1024];
  53.    int len = 0;
  54.    while ((len=fis.read(buf))!=-1)
  55.    {
  56.     fos.write(buf,0,len);
  57.    }
  58.   }
  59.   catch (IOException e)
  60.   {
  61.    e.printStackTrace();
  62.    throw new RuntimeException("文件复制失败");
  63.   }
  64.   finally
  65.   {
  66.    try
  67.    {
  68.     if(fis!=null)
  69.      fis.close();
  70.    }
  71.    catch (IOException e)
  72.    {
  73.     e.printStackTrace();
  74.    }
  75.    try
  76.    {
  77.     if(fos!=null)
  78.      fos.close();
  79.    }
  80.    catch (IOException e)
  81.    {
  82.     e.printStackTrace();
  83.    }
  84.   }
  85. }
  86. }
复制代码


作者: 小周务商    时间: 2014-4-25 12:59
这代码没格式化。看得真的头疼。
作者: gma103    时间: 2014-4-25 14:13
过来学习学习
作者: 黄晓鑫    时间: 2014-4-25 16:45
/*
* 需求:(把D盘文件复制到C盘)
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/*
思路
1、通过盘符或者盘符下的所以文件和目录。
2、对盘符下的文件进行遍历,遍历的过程中定义盘条件。
3、如果是文件,直接复制,如果是目录,那就对目录进行迭代。
4、如果目录中的文件还是目录,那就对目录进行递归操作。
5、关闭所有流资源。
*/
public class Test{
public static void main(String[] args)throws IOException{
copyRoot(new File("C:\\"),new File("E:\\"));
}
/*
复制文件方法
*/
public static void copyFile(File dest,File src)throws IOException{
InputStream ips = new FileInputStream(src);
OutputStream ops = new FileOutputStream(dest);
byte[] buf =new byte[1024];
int len = 0;
while((len = ips.read(buf))!=-1){
ops.write(buf, 0, len);
}
ips.close();
ops.close();
}
/*
复制目录下的文件。
*/
public static void copyDir(File dest,File src)throws IOException{
dest.mkdirs();
File []dirAndFile = src.listFiles();
for(File dirOrFile : dirAndFile){
if(dirOrFile.isFile()){
copyFile(new File(dest.getAbsolutePath()+"\\"+dirOrFile.getName()),
new File(dirOrFile.getAbsolutePath()));
}
else if(dirOrFile.isDirectory()){
copyDir(new File(dest.getAbsolutePath()+"\\"+dirOrFile.getName()),
new File(dirOrFile.getAbsolutePath()));
}
}
}
/*
复制整个盘符
*/
public static void copyRoot(File dest,File src)throws IOException{
File[] dirAndFile = src.listFiles();
if(src.exists()){
for(File dirOrFile : dirAndFile){
if(!dirOrFile.isHidden()){
if(dirOrFile.isFile()){
File destFile =
new File(dest.getAbsolutePath()+"\\"+dirOrFile.getName());
File srcFile =
new File(src.getAbsolutePath()+"\\"+dirOrFile.getName());
copyFile(destFile,srcFile);
}
else if(dirOrFile.isDirectory()){
File destDir =
new File(dest.getAbsolutePath()+"\\"+dirOrFile.getName());
File srcDir =
new File(src.getAbsolutePath()+"\\"+dirOrFile.getName());
copyDir(destDir,srcDir);
}
}
}
}
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2