首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 下載文件大小異常:歌曲與歌詞文件大小相同的排查思路

     編輯:程式設計綜合問答

現象

從 Tomcat 服務器下載音樂(.mp3)和歌詞(.lrc),服務器原文件大小不同,但手機端下載後兩文件大小完全一致。

核心原因

下載邏輯錯誤:將同一個輸入流的數據寫入了兩個輸出文件,或者請求 URL 錯誤導致兩個下載任務實際指向同一資源(如服務器端重定向/映射錯誤返回同一內容)。

排查步驟

  1. 驗證服務器端: 瀏覽器直接訪問兩個下載 URL,對比 Content-Length 和實際下載內容(用文本編輯器打開 .lrc 看是否為二進制音頻數據)。
  2. 檢查 Android 下載代碼: 確認兩個下載任務使用獨立的 HttpURLConnection、獨立的 InputStream 和 FileOutputStream。常見錯誤:複用同一連接對象、流未關閉導致數據殘留、線程池任務參數傳遞錯誤。
  3. 抓包分析: 用 Wireshark/Fiddler 抓取手機端請求,確認請求 URL、Response Header、Body 正確性。

代碼關鍵點


// 正確模式:每個文件獨立完整流程
private void downloadFile(String urlStr, File dest) {
    HttpURLConnection conn = (HttpURLConnection) new URL(urlStr).openConnection();
    try (InputStream in = conn.getInputStream();
         FileOutputStream out = new FileOutputStream(dest)) {
        byte[] buffer = new byte[8192];
        int len;
        while ((len = in.read(buffer)) != -1) out.write(buffer, 0, len);
    } finally { conn.disconnect(); }
}

建議

先在 PC 瀏覽器驗證服務器接口無誤,再排查客端代碼。日誌記錄每個文件的下載 URL、Content-Length、實際寫入字節數,快速定位問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved