解压文件到指定目录

本文介绍了一种使用Java实现的解压ZIP文件的方法。通过ZipInputStream读取输入流中的ZIP条目,并根据条目的类型(文件或目录)进行相应的处理。对于文件条目,将数据读取到缓冲区并写入到目标文件;对于目录条目,则创建对应的文件夹。
	    private static void unzip(InputStream fis, String outputDirectory)  throws Exception {  
	        ZipInputStream in = new ZipInputStream(fis);  
	        ZipEntry z;  
	        String name = "";  
	        String extractedFile = "";  
	        int counter = 0;  
	  
	        while ((z = in.getNextEntry()) != null) {  
	            name = z.getName();  
	            Log.d("Test", "unzipping file: " + name);  
	            if (z.isDirectory()) {  
	                Log.d("Test", 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("Test", "mkdir " + outputDirectory + File.separator + name);  
	            } else {  
	                Log.d("Test", 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();  
	  
	    }

 

转载于:https://www.cnblogs.com/jiayonghua/p/3300363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值