2013-04-29 66 views
0

我有一個使用BufferedInputStream和BufferedOutputStream的上傳,現在我想獲得上傳的百分比進度。BOS/BIS正在取得進展

如何得到這個?

 BufferedInputStream bis = null; 
    BufferedOutputStream bos = null; 
    try 
    { 
     URL url = new URL(sb.toString()); 
     URLConnection urlc = url.openConnection(); 

     bos = new BufferedOutputStream(urlc.getOutputStream()); 
     bis = new BufferedInputStream(new FileInputStream(source)); 

     int i; 
     int progress = 0; 
     while ((i = bis.read()) != -1) 
     { 
      bos.write(i); 
      //how to get the progress here?! 

     } 
    } 
    finally 
    { 
     if (bis != null) 
      try 
      { 
       bis.close(); 
      } 
      catch (IOException ioe) 
      { 
       ioe.printStackTrace(); 
      } 
     if (bos != null) 
      try 
      { 
       bos.close(); 
      } 
      catch (IOException ioe) 
      { 
       ioe.printStackTrace(); 
      } 

    } 

回答

1

沒問題。出於這些目的,您可以使用CountingInputStreamCountingOutputStream包裝。見Apache Commons IO 2.5 library

+0

有沒有辦法做到這一點與Java中包含的共同庫? – bbholzbb 2013-04-29 19:55:23

+0

嗯,實際上你可以通過你自己實現這些簡單的包裝,只是看它們是如何構建的(Commons庫是開源的)。但是在標準的Java類中沒有類似'Counint * Stream'的準備類。 – Andremoniy 2013-04-29 20:01:19