java上傳並下載以及解壓zip文件有時會報文件被損壞錯誤分析以及解決


情景描述:

  1.將本地數據備份成zip文件;

  2.將備份的zip文件通過sftp上傳到文件服務器;

  3.將文件服務器上的zip文件下載到運行服務器;

  4.將下載的zip文件解壓到本地(文件大小超過50KB時報文件被損壞);

 

分析:

  既然報文件被損壞,肯定就是因為下載文件時文件沒有讀取完全。

程序肯定不會騙人,但是當時在解決這個問題的時候,就是不願意相信是下載的問題,因為文件確實是下載下來了,而且流也關閉了,也提示下載成功了,所以就去懷疑是程序存在的問題,這是很不應該的。

 

問題代碼:

         byte[] b = new byte[10*1024];
            while(download.getInputStream().read(b,0,10240) != -1){
              fos.write(b,0,10240);
            }

結論:

  對於影像、流等應該按照字節來讀取,而不應該一下讀取多個字節,這樣容易少讀取文件,造成文件損壞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM