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 + -
显示快捷键?