复制文件和目录
public class CopyFile
{
// 复制单个文件,如果目标存在则不覆盖
// srcFileName 源文件名
// destFileName 目标文件名
public static boolean copyFile(String srcFileName, String destFileName)
{
return copyFile(srcFileName, destFileName, false);
}
// 复制单个文件,如果目标存在则覆盖
public static boolean copyFile(String srcFileName, String destFileName, boolean overlay)
{
File file = new File(srcFileName);
if (!file.exists())
{
System.out.println("复制失败源文件" + srcFileName + "不存在");
return false;
} else if (!file.isFile())
{
System.out.println("复制失败" + srcFileName + "不是一个文件");
return false;
}
File file2 = new File(destFileName);
if (file2.exists())
{
if (overlay)
{
System.out.println("目标文件已经存在准备删除它");
if (DeletFile.delete(destFileName) == false)
{
System.out.println("文件复制失败,删除已经存在的目标文件失败");
return false;
}
} else
{
System.out.println("复制文件失败,目标文件已经存在!");
return false;
}
} else
// 如果目标文件所在的目录不存在则创建它
{
System.out.println("目标文件所在目录不存在,准备创建它");
if (!file2.getParentFile().mkdirs())
{
System.out.println("复制文件失败,创建目标所在的目录是失败");
return false;
}
}
int byteread = 0;
InputStream in = null;
OutputStream out = null;
try
{
in = new FileInputStream(file);
out = new FileOutputStream(file2);
byte[] buffer = new byte[1024];
while ((byteread = in.read(buffer)) != -1)//in.read(buffer)读取的文件流放在buffer中若文件没有读完则返回字节流的大小 最大为buffer数组的大小 ,若读到文件末尾,则返回-1;
{
out.write(buffer, 0, byteread);
}
System.out.println("复制单个文件" + srcFileName + "至" + destFileName + "成功");
return true;
} catch (IOException e)
{
System.out.println("复制文件失败 " + e.getMessage());
return false;
} finally
{
if (out != null)
{
try
{
out.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
if (in != null)
{
try
{
in.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
//复制整个目录的内容如果目录存在则不覆盖
public static boolean copyDirtory(String srcDirName,String destDirName)
{
return copyFile(srcDirName, destDirName, false);
}
public static boolean copyDirtory(String srcDirName,String destDirName,boolean overlay)
{
File srcdirFile=new File(srcDirName);
if(!srcdirFile.exists())
{
System.out.println("复制目录失败,源目录"+srcDirName+"不存在");
return false;
}
else if(!srcdirFile.isDirectory())
{
System.out.println("复制目录失败,"+srcDirName+"不是一个目录");
return false;
}
if(! destDirName.endsWith(File.separator))
destDirName+=File.separator;
File destDir=new File(destDirName);
if(destDir.exists())
{
if(overlay)
{
System.out.println("目标已存在准备删除它");
if(!DeletFile.deleteDirectroy(destDirName))
{
System.out.println("复制文件失败,删除原有目录失败");
return false;
}
}
else {
System.out.println("目标已经存在");
}
}
boolean b=true;
File[]files=destDir.listFiles();
for(int i=0;i<files.length;i++)
{
if(files[i].isFile())
{
b=CopyFile.copyFile(files[i].getAbsolutePath(), destDirName+files[i].getName());
if(b==false)break;
}
if(files[i].isDirectory())
{
b=copyDirtory(files[i].getAbsolutePath(), destDirName+files[i].getName());
if(b==false)
break;
}
}
if(b==false)
{
System.out.println("目录复制失败");
return false;
}
System.out.println("目录复制成功");
return true;
}
public static void main(String []args)
{
String yuan="C:/temp/newTemp.doc";
String muDiString="C:/haha/ttttt/temp.doc";
CopyFile.copyFile(yuan, muDiString,true);
CopyFile.copyDirtory(yuan, muDiString);
}
}
梦里不知身是客,一晌贪欢。