下面是我一开始自己敲了一遍的代码。乍一看没看出任何的错,对照了以前的学长的代码愣是没看出错来。而且思路照理来说应该很正确。
实在是纠结了很久。
public class CopyFiles
{
public static void main(String[] args)throws IOException
{
File yuan=new File("D:\\server");
File mudi=new File("E:\\server_2");
if(!mudi.exists())
{
mudi.createNewFile();
}
//建立多级文件目录
mudi.mkdirs();
//获取所有文件对象
File[] files=yuan.listFiles();
for(File file:files)
{
//获取目的文件夹下的目录
String mudi_dir=mudi+"\\"+file.getName();
if(file.isDirectory())
{
//获取源文件夹下的目录或文件名
String yuan_file=yuan+"\\"+file.getName();
//复制目录
copyDir(new File(yuan_file),new File(mudi_dir));
}
else
{
//复制文件
copyFile(file,new File(mudi_dir));
}
}
}
public static void copyDir(File yuan,File mudi)throws IOException
{
mudi.mkdirs();
File[] files=yuan.listFiles();
for(File file:files)
{
if(file.isDirectory())
{
copyDir(new File(yuan+"\\"+file),new File(mudi+"\\"+file.getName()));
}
else
{
copyFile(file,new File(mudi+"\\"+file.getName()));
}
}
}
public static void copyFile(File yuan,File mudi)throws IOException
{
BufferedInputStream buis=new BufferedInputStream(new FileInputStream(yuan));
BufferedOutputStream buos=new BufferedOutputStream(new FileOutputStream(mudi.getAbsolutePath()+""));
byte[] buf=new byte[1024];
int len=0;
while((len=buis.read(buf))!=-1)
{
buos.write(buf,0,len);
buos.flush();
}
buis.close();
buos.close();
}
}
|
|