论坛首页 入门技术论坛

parse --CopyFileThread 2

浏览 1334 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-29  
程序思路: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+

}

}


论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics