Android文件下載前獲取多個(gè)網(wǎng)絡(luò)文件總大小

文件下載是開發(fā)中比較常見的功能推盛,當(dāng)后端無法告訴前端下載文件大小時(shí)耘成,就需要前端自己獲取文件大小

簡單的方法為:

final URLConnection connection = url.openConnection();
final int length = connection.getContentLength();

當(dāng)文件比較多且文件較大時(shí),使用getContentLength()獲取大小你會(huì)發(fā)現(xiàn)撒会,神馬情況师妙?太NM慢了

記錄一下解決文件下載前獲取多個(gè)網(wǎng)絡(luò)文件總大小時(shí)太慢的問題

    private long getAllFileLength(String[] fileList){
        try {
            URL u = null;
            long fileLength = 0;
            for (int i=0;i<fileList.length;i++){
                u = new URL(fileList[i]);
                HttpURLConnection urlcon = (HttpURLConnection) u.openConnection();
                 fileLength =  fileLength + handleFileLen(urlcon.getHeaderFields());
            }
            return fileLength;
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return 0;
        } catch (IOException e) {
            e.printStackTrace();
            return 0;
        }
    }
public long handleFileLen(Map<String, List<String>> headers) {
        if (headers == null || headers.isEmpty()) {
            Log.e(TAG, "header為空,獲取文件長度失敗");
            return -1;
        }
        List<String> sLength = headers.get("Content-Length");
        if (sLength == null || sLength.isEmpty()) {
            return -1;
        }
        String temp = sLength.get(0);
        long len = TextUtils.isEmpty(temp) ? -1 : Long.parseLong(temp);
        // 某些服務(wù)怔檩,如果設(shè)置了conn.setRequestProperty("Range", "bytes=" + 0 + "-");
        // 會(huì)返回 Content-Range: bytes 0-225427911/225427913
        if (len < 0) {
            List<String> sRange = headers.get("Content-Range");
            if (sRange == null || sRange.isEmpty()) {
                len = -1;
            } else {
                int start = temp.indexOf("/");
                len = Long.parseLong(temp.substring(start + 1));
            }
        }

        return len;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末珠洗,一起剝皮案震驚了整個(gè)濱河市若专,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膊爪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沛豌,死亡現(xiàn)場離奇詭異赃额,居然都是意外死亡跳芳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門娄琉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吓歇,“玉大人,你說我怎么就攤上這事女气〔饽” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵簇搅,是天一觀的道長软吐。 經(jīng)常有香客問我,道長姿现,這世上最難降的妖魔是什么肖抱? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任意述,我火速辦了婚禮吮蛹,結(jié)果婚禮上拌屏,老公的妹妹穿的比我還像新娘。我一直安慰自己倚喂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布焦读。 她就那樣靜靜地躺著舱权,像睡著了一般刑巧。 火紅的嫁衣襯著肌膚如雪无畔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天恭理,我揣著相機(jī)與錄音郭变,去河邊找鬼。 笑死周伦,一個(gè)胖子當(dāng)著我的面吹牛未荒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寨腔,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼率寡!你這毒婦竟也來了迫卢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤冶共,失蹤者是張志新(化名)和其女友劉穎乾蛤,沒想到半個(gè)月后每界,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夫椭,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氮发,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诈铛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篡九。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谐岁,死狀恐怖榛臼,靈堂內(nèi)的尸體忽然破棺而出伊佃,到底是詐尸還是另有隱情,我是刑警寧澤沛善,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布航揉,位于F島的核電站,受9級(jí)特大地震影響金刁,放射性物質(zhì)發(fā)生泄漏帅涂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一尤蛮、第九天 我趴在偏房一處隱蔽的房頂上張望媳友。 院中可真熱鬧,春花似錦产捞、人聲如沸醇锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽焊唬。三九已至,卻和暖如春看靠,著一層夾襖步出監(jiān)牢的瞬間赶促,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工挟炬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸥滨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓辟宗,卻偏偏與公主長得像爵赵,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泊脐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容