java 读取网络ZipInputStream 中 Zipentry 文本文件

在读取网络文件中的文件时有可能是gzip tar zip格式的压缩文件,通常要直接通过网络读取第三方的数据,下面记录了一下使用ZipInputStream 中ZipEntry中的txt文件

	HttpClient httpClient = new DefaultHttpClient();
		HttpPost post = new HttpPost("https://
mobile/phone/download");

		Map<String,String> poststr = new HashMap<String,String>();
		poststr.put("param1", "1.0.2");
		poststr.put("param2", "12345");
		poststr.put("param3", "323f");
		poststr.put("param4", "232323");

		List<BasicNameValuePair> basicNameValuePairList = new ArrayList<BasicNameValuePair>();
		for (Map.Entry<String, String> paramEntry : poststr.entrySet()) {
			basicNameValuePairList.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue()));
		}
		post.setEntity(new UrlEncodedFormEntity(basicNameValuePairList, "UTF-8"));

		HttpRequestBase httpRequestBase = post;
		HttpResponse response = httpClient.execute(httpRequestBase);
		System.out.println(response.getStatusLine().getStatusCode());
		String data = EntityUtils.toString(response.getEntity(), "utf-8");
		System.out.println("=====================");
		System.out.println(data);
		int index = data.indexOf("aaa=111");
		if (index < 0) {
			System.out.println("failed");
			return ;
		}
		String[] datas = data.split("=");
		byte[] bytes = new BASE64Decoder().decodeBuffer(datas[3]);
		
		byte[] data1 = null;
                ByteArrayInputStream in;
                ZipInputStream zip;
		try {
			in = new ByteArrayInputStream(bytes);
			zip = new ZipInputStream(in);
			while (zip.getNextEntry() != null) {
				byte[] buf = new byte[1024];
				int num = -1;
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				while ((num = zip.read(buf, 0, buf.length)) != -1) {
					baos.write(buf, 0, num);
				}
				data1 = baos.toByteArray();
			}
			System.out.println(new String(data1));

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
                     zip.close();
                     in.close();
                }

上面仅供参考,由于是读取第三方系统的数据,不方便将所有的代码都贴出来

如果是本地的zip文件可以使用ZipFIle 读取文件,然后通过ZipFile的getInputstream()去获取流解析

流如果是文本文件可以直接使用Apach commons-Io包中IOUtils.toString()读取文件内容。

猜你喜欢

转载自shareisattitude.iteye.com/blog/2397233