parse --CopyFileThread 2


程序思路: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+

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值