2012-10-20 71 views
1

我想要讀取數組中的元素並將讀取的進度顯示爲並行過程讀取。如何在IO操作期間顯示進度

我有兩個INTERAL類:

public class NumbersCounter { 

    int totalCountOfLines; 
    int currentCountOfLines = 1; 

    public NumbersCounter() throws FileNotFoundException, IOException {  
     new Read(); 
     new Progress(); 
    } 

    public static void main(String[] args) { 
     try { 
      new NumbersCounter(); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(NumbersCounter.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (IOException ex) { 
      Logger.getLogger(NumbersCounter.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    class Progress extends Thread { 
     public Progress() { 
      start(); 
     } 

     @Override 
     public void run() {   
      synchronized(new Object()) { 
       while (currentCountOfLines <= totalCountOfLines) { 
        System.out.println(currentCountOfLines/totalCountOfLines * 100 + "%"); 
        Thread.yield(); 
       }    
      } 
    }} 

    class Read extends Thread { 
     private FileHandler fh = new FileHandler("ololo.txt"); 
     private String[] lines; 

     public Read() throws FileNotFoundException, IOException { 
      this.lines = fh.readFromFile(); 
      start(); 
     } 

     @Override 
     public void run() { 

      totalCountOfLines = this.lines.length; 

      if (totalCountOfLines > 0) { 
       synchronized(new Object()) { 
        for (String line : lines) { 
         currentCountOfLines++; 
         Thread.yield(); 
        } 

       } 
      } else { 
       totalCountOfLines = 0; 
      }  
     } 
    } 
} 

當執行讀取線程的第一步,我需要給執行到進度線程,然後爲閱讀,然後進展。

回答

1

使用javax.swing.ProgressMonitorInputStream類作爲輸入流的包裝,該包裝顯示進度對話框。