TShopping

 找回密碼
 註冊
搜索
查看: 300|回復: 0

[教學] JAVA 如何在LINUX COPY files時出現PROCESS圖標

[複製鏈接]
發表於 2014-8-15 12:35:27 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
有使用過進度條的朋友一定會覺得很不方便
因為要從0~100讀取 浪費時間
因檔案大小也不知道這時間讀寫的完嗎?
如這篇
Java Swing 如何使用進度

於是經過修正
改成此方法
可利用DIALOG準確的抓到讀寫完成的時間
  1. processdialog.setTitle("Copying files to USB");
  2.                             processdialog.add(labelimg);
  3.                             processdialog.setLocation(400,250);
  4.                             processdialog.pack(); // Packs the dialog so that the JOptionPane can be seen
  5.                             processdialog.setVisible(true); // Shows the dialog
  6.                             new Thread(){
  7.                                     public void run(){
  8.                                             try{
  9.                                                 Process process = null;
  10.                                                 BufferedReader input = null;
  11.                                                 final Runtime runtime = Runtime.getRuntime();
  12.                                                 //extact tar for ext3 file
  13.                                                 String tarstring = "tar -xvpf /"+tarpath+"/"+cellValue+".tar -C "+extpatition+"/";
  14.                                                 process = runtime.exec(new String[]{"/bin/sh","-c",tarstring});
  15.                                                 InputStream stdout = process.getInputStream ();
  16.                                                 InputStreamReader osr = new InputStreamReader (stdout);
  17.                                                 BufferedReader obr = new BufferedReader (osr);
  18.                                                 process.waitFor();
  19.                                                
  20.                                                 Thread.sleep(2000);
  21.                                             }catch(Exception e){
  22.                                                     e.printStackTrace();
  23.                                             }finally{
  24.                                                     processdialog.dispose();
  25.                                             }
  26.                                     }
  27.                             }.start();
複製代碼
new Thread這樣包起來就可以了
問甚麼要這樣做呢?
因為dialog其實是非常浪費資源的
如果我程式起始啟動dialog
結束用dialog.dispose();時
dialog圖標根本還沒出來就關閉了
就卡個視窗而以
完整過程圖片

Screenshot.png


 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-3 22:53 , Processed in 0.061086 second(s), 24 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表