程序思路:startCopy方法这只成private Boolean 传入两个参数 String src,String dest,分别代表源文件和目标文件。
File srcFile=new File(src);实例化一个文件对象 将代表源文件的参数传入进去,接下来判断源文件是否存在
If(!srcFile.exists())
{
JOptionPane.showmessage(null,“源文件”+ src+”不存在”);
Finished=true;
Return false;
}
接下来实例化一个文件对象,代表目标文件
File destFile=new File(dest+File.separator+ srcFile.getName());
如果目标文件已经存在 那么就要删除目标文件
showConfirmDialog:
public static int showConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon)
throws HeadlessException
parentComponent - 确定在其中显示对话框的 Frame;如果为 null 或者 parentComponent 不具有 Frame,则使用默认的 Frame
message - 要显示的 Object
title - 对话框的标题字符串
optionType - 指定可用于对话框的选项的 int:YES_NO_OPTION、YES_NO_CANCEL_OPTION 或 OK_CANCEL_OPTION
messageType - 指定此消息种类的 int,主要用于确定来自可插入外观的图标:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE
icon - 要在对话框中显示的图标
If(destFile.exists())
{
Int ref=JOptionPane.showConfirmDialog(null, "文件已经存在,确定要删除吗?","警告"+JOptionPane.OK_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE)
}
If(!ref==JOptionPane.OK_OPTION)
{
Finished=true;
Return false;
}
Finished=true;
Retuen false;
If(srcFile.isDirectory())
{
Finished=true;
Return copyDir(srcFile.getsolutPath,dest);
}
Else{
Return copyRealFileThread(src,destFile.getxolutePath);
}
Return true;
接下来写一个复制真正文件的方法 就是说 复制的文件中间是没有目录的 只含有文件。
Public Boolean copyRealFile(String srcName,String destName)//我们需要创建文件流的对象
{
Try{
//创建一个文件输入流的对象 将源文件的名字放到输入流对象中
FileInputStream fis=new FileInputStream(srcName);
//创建一个BufferedInputStream对象 ,把已经放入了文件的文件流转换成字节流
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream(destName);
BufferedOutputStream bos=new BufferedOutputStream(fos);
Int i=0;
If((i= bis.read())!=-1)
Bos.write(i);
Fis.close();
Fos.close();
//文件个数累计加加
fileCount++;
}
Catch(Exception e)
{}
Return true;
}
接下来,将复制文件的方法放入线程池中 让线程池中的线程去完成它
Private void copyRealFileThread(final String srcName,final String destName)
{
Ruunable runnable=new Runnable()
{
Public void run()
{
copyRealFile(srcName,destName);
}
};
threadPool.excute(runnable);//执行一个实现了Runnable接口的方法
}
接下来要取得复制文件的返回结果 ,在Main方法里面实现这个方法 然后打印出来
Public String getResultDescription()
{
//当拷贝还没有完成的时候 线程休眠三秒钟
While(!finished){
Try{
Thread.sleep(3000);
}
Catch(Exception e){
}
Return “复制的文件个数”+fileCount+
}
}
parse --CopyFileThread 2
最新推荐文章于 2023-04-10 11:43:42 发布