当前位置:操作系统 > 安卓/Android >>

Android程序解压缩zip文件,并加载显示解压后的文件内容

 

刚做了个demo用于解压缩本地zip文件,并用webview显示其中的一个html文件,直接上代码,需要的朋友可以看看

 

public class ZipActivity extends Activity { 

    private static final String TAG = "HelloXmlActivity"; 

    private WebView mWebView;   

 

    private static LinkedHashMap<String, String> widgetInfoMap = new LinkedHashMap<String, String>(); 

 

    //http://blog.csdn.net/com360/article/details/6618086 

    /** Called when the activity is first created. */ 

    @Override 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

        String zipfile = "/sdcard/abc.zip"; 

        try { 

            unzip(zipfile, "/sdcard/");//yangguangfu/wujiali/ 

             

             

        } catch (Exception e) { 

            // TODO Auto-generated catch block 

            e.printStackTrace(); 

             

        } 

         

        mWebView=(WebView)findViewById(R.id.web); 

        mWebView.loadUrl("file:///sdcard/abc/aaa.html");//此处加载解压后的html内容 

 

    } 

 

    /*

     * 这个是解压ZIP格式文件的方法

     * 

     * @zipFileName:是传进来你要解压的文件路径,包括文件的名字;

     * 

     * @outputDirectory:选择你要保存的路劲;

     * 

     */ 

    private void unzip(String zipFileName, String outputDirectory) 

            throws Exception { 

        ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName)); 

        ZipEntry z; 

        String name = ""; 

        String extractedFile = ""; 

        int counter = 0; 

 

        while ((z = in.getNextEntry()) != null) { 

            name = z.getName(); 

            Log.d(TAG, "unzipping file: " + name); 

            if (z.isDirectory()) { 

                Log.d(TAG, name + "is a folder"); 

                // get the folder name of the widget 

                name = name.substring(0, name.length() - 1); 

                File folder = new File(outputDirectory + File.separator + name); 

                folder.mkdirs(); 

                if (counter == 0) { 

                    extractedFile = folder.toString(); 

                } 

                counter++; 

                Log.d(TAG, "mkdir " + outputDirectory + File.separator + name); 

            } else { 

                Log.d(TAG, name + "is a normal file"); 

                File file = new File(outputDirectory + File.separator + name); 

                file.createNewFile(); 

                // get the output stream of the file 

                FileOutputStream out = new FileOutputStream(file); 

                int ch; 

                byte[] buffer = new byte[1024]; 

                // read (ch) bytes into buffer 

                while ((ch = in.read(buffer)) != -1) { 

                    // write (ch) byte from buffer at the position 0 

                    out.write(buffer, 0, ch); 

                    out.flush(); 

                } 

                out.close(); 

            } 

        } 

 

        in.close(); 

 

    } 

 

     

 

其中我的abc.zip文件是放在sdcard中的,里面有2个文件,解压后生成一个abc文件夹,文件夹下是解压缩后的2个文件,我用一个webview直接指定加载了解压后的一个html文件,做的比较粗糙,省去了文件存在判断,扫描文件名、文件类型,main.xml

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,