Android 對(duì) aar文件進(jìn)行查看(復(fù)制辰如、改名普监、解壓)

未命名表單.png

UZipFile.java

import java.io.*;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * Created by wzj on 2016/9/9.
 */
public class UZipFile {
    /**
     * 解壓到指定目錄
     */
    public static void unZipFiles(String zipPath, String descDir) throws IOException {
        unZipFiles(new File(zipPath), descDir);
    }

    /**
     * 解壓文件到指定目錄
     */
    @SuppressWarnings("rawtypes")
    public static void unZipFiles(File zipFile, String descDir) throws IOException {
        File pathFile = new File(descDir);
        if (!pathFile.exists()) {
            pathFile.mkdirs();
        }
        //解決zip文件中有中文目錄或者中文文件
        ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK"));
        for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {
            ZipEntry entry = (ZipEntry) entries.nextElement();
            String zipEntryName = entry.getName();
            InputStream in = zip.getInputStream(entry);
            String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
            ;
            //判斷路徑是否存在,不存在則創(chuàng)建文件路徑
            File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
            if (!file.exists()) {
                file.mkdirs();
            }
            //判斷文件全路徑是否為文件夾,如果是上面已經(jīng)上傳,不需要解壓
            if (new File(outPath).isDirectory()) {
                continue;
            }
            //輸出文件路徑信息
            System.out.println(outPath);
            OutputStream out = new FileOutputStream(outPath);
            byte[] buf1 = new byte[1024];
            int len;
            while ((len = in.read(buf1)) > 0) {
                out.write(buf1, 0, len);
            }
            in.close();
            out.close();
        }
        System.out.println("******************解壓完畢********************");
    }
}

MainProgram.java


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class MainProgram {

    public static void main(String[] args) {

        String foldNamePath = "./src/lib/";
        String[] aarFilePathNameArr = getAllFileName(foldNamePath);
        String[] zipFilePathNameArr = getAllFileNewName(foldNamePath);
        for (int i = 0; i < aarFilePathNameArr.length; i++) {
            try {
                copy(aarFilePathNameArr[i],zipFilePathNameArr[i]);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }


        String[] allUzipFileNewName = getAllUzipFileNewName(zipFilePathNameArr);

        for (int i = 0; i < zipFilePathNameArr.length; i++) {
            try {
                System.out.println("源文件路徑: -> " + zipFilePathNameArr[i]);
                System.out.println("解壓文件路徑: -> " + allUzipFileNewName[i]);
                System.out.println("============================================= ");
                UZipFile.unZipFiles(zipFilePathNameArr[i],allUzipFileNewName[i]);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }



    public static  String[] getAllFileName(String path) {
        ArrayList<String> files = new ArrayList<String>();
        File file = new File(path);
        File[] tempList = file.listFiles();
        if (null != tempList && tempList.length > 0){
            for (int i = 0; i < tempList.length; i++) {
                files.add(tempList[i].getPath());
            }
        }
        String[] aarFileTypeArr = (String[])files.toArray(new String[0]);
        return aarFileTypeArr;
    }

    public static  String[] getAllFileNewName(String path) {
        ArrayList<String> files = new ArrayList<String>();
        File file = new File(path);
        File[] tempList = file.listFiles();
        if (null != tempList && tempList.length > 0){
            for (int i = 0; i < tempList.length; i++) {
                String origalPath = tempList[i].getPath();
                origalPath = origalPath.substring(0,origalPath.length() - 3) + "zip";
                origalPath = origalPath.substring(0,6) + "zip" + origalPath.substring(9);
                files.add(origalPath);
            }
        }
        String[] zipFileTypeArr = (String[])files.toArray(new String[0]);
        return zipFileTypeArr;
    }

    private static  String[] getAllUzipFileNewName(String[] zipFileArr){
        ArrayList<String> files = new ArrayList<String>();
        if (null != zipFileArr && zipFileArr.length > 0){
            for (int i = 0; i < zipFileArr.length; i++) {
                String origalPath = zipFileArr[i];
                origalPath = origalPath.substring(0,6) + "uzip" + origalPath.substring(9,origalPath.length() - 4) + "/";
                files.add(origalPath);
            }
        }
        String[] uzipFileTypeArr = (String[])files.toArray(new String[0]);
        return uzipFileTypeArr;
    }


    private static void copy(String url1, String url2) throws Exception {
        String dirPath = "./src/zip";
        File dirFile = new File(dirPath);
        if (dirFile.exists()){
            dirFile.delete();
        }
        dirFile.mkdirs();
        FileInputStream in = new FileInputStream(new File(url1));
        FileOutputStream out = new FileOutputStream(new File(url2));
        byte[] buff = new byte[512];
        int n = 0;
        System.out.println("復(fù)制文件:" + "\n" + "源路徑:" + url1 + "\n" + "目標(biāo)路徑:"
                + url2);
        while ((n = in.read(buff)) != -1) {
            out.write(buff, 0, n);
        }
        out.flush();
        in.close();
        out.close();
        System.out.println("復(fù)制完成");
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市琉兜,隨后出現(xiàn)的幾起案子凯正,更是在濱河造成了極大的恐慌,老刑警劉巖豌蟋,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廊散,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梧疲,警方通過(guò)查閱死者的電腦和手機(jī)允睹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)运准,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人缭受,你說(shuō)我怎么就攤上這事胁澳。” “怎么了贯涎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵听哭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我塘雳,道長(zhǎng)陆盘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任败明,我火速辦了婚禮隘马,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妻顶。我一直安慰自己酸员,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布讳嘱。 她就那樣靜靜地躺著幔嗦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沥潭。 梳的紋絲不亂的頭發(fā)上邀泉,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音钝鸽,去河邊找鬼汇恤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拔恰,可吹牛的內(nèi)容都是我干的因谎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼颜懊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼财岔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起河爹,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤匠璧,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昌抠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體患朱,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年炊苫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裁厅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冰沙。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖执虹,靈堂內(nèi)的尸體忽然破棺而出拓挥,到底是詐尸還是另有隱情,我是刑警寧澤袋励,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布侥啤,位于F島的核電站,受9級(jí)特大地震影響茬故,放射性物質(zhì)發(fā)生泄漏盖灸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一磺芭、第九天 我趴在偏房一處隱蔽的房頂上張望赁炎。 院中可真熱鬧,春花似錦钾腺、人聲如沸徙垫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姻报。三九已至,卻和暖如春间螟,著一層夾襖步出監(jiān)牢的瞬間吴旋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工寒亥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邮府,地道東北人荧关。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓溉奕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親忍啤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子加勤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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