浏览 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+ } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |