黑马程序员技术交流社区
标题:
复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答
[打印本页]
作者:
の放下执著
时间:
2014-4-25 00:30
标题:
复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答
复制一个文件夹,比如从C盘复制到D盘,怎么复制,求高手解答
作者:
展展
时间:
2014-4-25 11:46
利用递归可以实现,这个我之前写过了,翻出以前代码直接给你参考吧,希望能帮助到你
import java.io.*;
/*
复制文件夹
*/
class CopyFileDemo
{
public static void main(String[] args)
{
File sour = new File("c:\\SF");
File targ = new File("e:\\copy");
targ.mkdir();
findFile(sour,targ);
}
public static void findFile(File sour,File targ)
{
File[] files = sour.listFiles();
for (File file:files )
{
if(file.isDirectory())
{
String dir = file.getName();
File newFile = new File(targ+"\\"+dir);
newFile.mkdirs();
findFile(file,newFile);
}
else
{
try
{
String fileName = file.toString();
int index =fileName.lastIndexOf("\\");
fileName=fileName.substring(index);
copyFile(file,fileName,targ);
}
catch (Exception ex)
{
//e.printStackTrace();
throw new RuntimeException("文件复制失败!");
}
}
}
}
public static void copyFile(File sour,String name,File newFile)
{
FileInputStream fis = null;
FileOutputStream fos = null;
try
{
fis = new FileInputStream(sour);
fos = new FileOutputStream(newFile+name);
System.out.println(sour+"::"+(newFile+name));
byte[] buf = new byte[1024];
int len = 0;
while ((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch (IOException e)
{
e.printStackTrace();
throw new RuntimeException("文件复制失败");
}
finally
{
try
{
if(fis!=null)
fis.close();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
复制代码
作者:
小周务商
时间:
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