preparecopyfile.java
来自「java网络高级编程的配套源码,java网络高级编程为清华出版社出版.」· Java 代码 · 共 98 行
JAVA
98 行
/*源文件清单7-10*/
package CopyFile;
import java.io.*;
import borland.jbcl.control.*;
public class PrepareCopyFile extends Thread
{
MainFrame mainFrame=null;
String sourceName=null;
String disName=null;
public PrepareCopyFile(MainFrame frame,String sname,String dname)
{
this.mainFrame=frame;
this.sourceName=sname;
this.disName=dname;
}
public void run()
{
copyFile(sourceName,disName);
stop();
}
void copyFile(String sname,String dname)
{
File file_in=new File(sname);
File file_out=new File(dname);
boolean inExist=file_in.exists();
if(!inExist)
{
MessageDialog mdlg=new MessageDialog(mainFrame,"消息","源文件或目录不存在!",1);
mdlg.show();
return;
}//确认源文件或目录存在
mkDirs(dname);
String filename=file_in.getName();
boolean isOutDirectory=file_out.isDirectory();//若为false表示其中包含文件名
boolean isInDirectory=file_in.isDirectory();
boolean isInFile=file_in.isFile();
if(isInFile)
{//若源为文件
if(isOutDirectory)
{//若为目录
if(dname.endsWith("\\"))
dname=file_out.getAbsolutePath()+filename;
else dname=file_out.getAbsolutePath()+"\\"+filename;
}
sname=file_in.getAbsolutePath();
CopyFile copy=new CopyFile(mainFrame,sname,dname);
copy.start();
mainFrame.addCopyingFile(sname);
}
else if(isInDirectory&&isOutDirectory)
{//若源为目录
String[] list=file_in.list();
for(int i=0;i<list.length;i++)
{
File file=new File(list[i]);
if(sname.endsWith("\\"))
sname=file_in.getAbsolutePath()+list[i];
else
sname=file_in.getAbsolutePath()+"\\"+list[i];
if(dname.endsWith("\\"))
dname=file_out.getAbsolutePath()+list[i];
else
dname=file_out.getAbsolutePath()+"\\"+list[i];
if(file.isFile())
{//列出的是文件
CopyFile copy=new CopyFile(mainFrame,sname,dname);
copy.start();
}
else{//列出的是目录,递归调用自身
copyFile(sname,dname);
}
}
}
}
//创建目标文件不存在的目标目录
void mkDirs(String str)
{
String strFile=null;
int index=str.lastIndexOf(".");
if(index==-1) strFile=str;
else
{
index=str.lastIndexOf("\\");
strFile=str.substring(0,index);
}
File file=new File(strFile);
file.mkdirs();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?