求写一个java小程序
importjava.io.File;importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjavax.swing.JOptionPane;
/**
*复制文件或文件夹
*
*zww
*/
publicclassCopyFileUtil{
privatestaticStringMESSAGE="";
/**
*复制单个文件
*
*@paramsrcFileName
*待复制的文件名
*@paramdescFileName
*目标文件名
*@paramoverlay
*如果目标文件存在,是否覆盖
*@return如果复制成功返回true,否则返回false
*/
publicstaticbooleancopyFile(StringsrcFileName,StringdestFileName,
booleanoverlay){
FilesrcFile=newFile(srcFileName);
//判断源文件是否存在
if(!srcFile.exists()){
MESSAGE="源文件:"+srcFileName+"不存在!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}elseif(!srcFile.isFile()){
MESSAGE="复制文件失败,源文件:"+srcFileName+"不是一个文件!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}
//判断目标文件是否存在
FiledestFile=newFile(destFileName);
if(destFile.exists()){
//如果目标文件存在并允许覆盖
if(overlay){
//删除已经存在的目标文件,无论目标文件是目录还是单个文件
newFile(destFileName).delete();
}
}else{
//如果目标文件所在目录不存在,则创建目录
if(!destFile.getParentFile().exists()){
//目标文件所在目录不存在
if(!destFile.getParentFile().mkdirs()){
//复制文件失败:创建目标文件所在目录失败
returnfalse;
}
}
}
//复制文件
intbyteread=0;//读取的字节数
InputStreamin=null;
OutputStreamout=null;
try{
in=newFileInputStream(srcFile);
out=newFileOutputStream(destFile);
byte[]buffer=newbyte[1024];
while((byteread=in.read(buffer))!=-1){
out.write(buffer,0,byteread);
}
returntrue;
}catch(FileNotFoundExceptione){
returnfalse;
}catch(IOExceptione){
returnfalse;
}finally{
try{
if(out!=null)
out.close();
if(in!=null)
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
/**
*复制整个目录的内容
*
*@paramsrcDirName
*待复制目录的目录名
*@paramdestDirName
*目标目录名
*@paramoverlay
*如果目标目录存在,是否覆盖
*@return如果复制成功返回true,否则返回false
*/
publicstaticbooleancopyDirectory(StringsrcDirName,StringdestDirName,
booleanoverlay){
//判断源目录是否存在
FilesrcDir=newFile(srcDirName);
if(!srcDir.exists()){
MESSAGE="复制目录失败:源目录"+srcDirName+"不存在!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}elseif(!srcDir.isDirectory()){
MESSAGE="复制目录失败:"+srcDirName+"不是目录!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}
//如果目标目录名不是以文件分隔符结尾,则加上文件分隔符
if(!destDirName.endsWith(File.separator)){
destDirName=destDirName+File.separator;
}
FiledestDir=newFile(destDirName);
//如果目标文件夹存在
if(destDir.exists()){
//如果允许覆盖则删除已存在的目标目录
if(overlay){
newFile(destDirName).delete();
}else{
MESSAGE="复制目录失败:目的目录"+destDirName+"已存在!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}
}else{
//创建目的目录
System.out.println("目的目录不存在,准备创建。。。");
if(!destDir.mkdirs()){
System.out.println("复制目录失败:创建目的目录失败!");
returnfalse;
}
}
booleanflag=true;
File[]files=srcDir.listFiles();
for(inti=0;i<files.length;i++){
//复制文件
if(files[i].isFile()){
flag=CopyFileUtil.copyFile(files[i].getAbsolutePath(),
destDirName+files[i].getName(),overlay);
if(!flag)
break;
}elseif(files[i].isDirectory()){
flag=CopyFileUtil.copyDirectory(files[i].getAbsolutePath(),
destDirName+files[i].getName(),overlay);
if(!flag)
break;
}
}
if(!flag){
MESSAGE="复制目录"+srcDirName+"至"+destDirName+"失败!";
JOptionPane.showMessageDialog(null,MESSAGE);
returnfalse;
}else{
returntrue;
}
}
publicstaticvoidmain(String[]args){
StringsrcDirName="C:/test/test0/test1";
StringdestDirName="c:/ttt";
CopyFileUtil.copyDirectory(srcDirName,destDirName,true);
}
}
多重随机标签