python challenge challenge6之java解

challeng5 是使用Python的pickle模块,对对象进行持久化管理。java和python的对象持久化算法不同,没法代替。

python解法在 http://lampeter123.iteye.com/blog/398535
里面介绍的比较详细,偶就不说了

但是这个java解法是不能得得到答案的
java zip解压时没法把每个文件里面的comments读取出来,都是null
而python可以读出来


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;

public class Challenge6Zip {
	
	private final static int BUFFER = 1024; 
	
	private final static String destPath = "D:\\temp";
	
	public static void main(String[] args) {
//		downloadZipfile();
		extractZipFile();
//		readFile();
		
//		readZipComments();
	}

	private static void readZipComments() {
		
		
	}

	private static void readFile() {
		String number = "90052";
		for(int i=0; i<910;i++){
			try {
				FileInputStream fis = new FileInputStream(new File(destPath+"\\"+number + ".txt"));
				String line;
				BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
				line = reader.readLine();
				StringBuilder builder = new StringBuilder();
				while(line!=null){
					builder.append(line);
					line = reader.readLine();
				}
				String fileStr = builder.toString();
				if(fileStr.indexOf("Next nothing")!=-1){
					String[] strArr = builder.toString().split(" ");
					number = strArr[strArr.length-1];
					System.out.println("number =" + number);
				}else{
					System.out.println(fileStr);
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}	
		}
				
			
		
	}
// java解包,没发现comments
	
	private static void extractZipFile() {
		
		try {
			FileInputStream fis = new FileInputStream(new File("D:\\temp\\channel.zip"));
			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
			ZipEntry entry;
			while((entry = zis.getNextEntry())!= null){
				System.out.println("entry name = " + entry.getName());
				System.out.println("entry comments = " + entry.getComment());
				File zipFile = new File(destPath + "\\"+ entry.getName());
				if(entry.isDirectory()){
					if(!zipFile.exists())
						zipFile.mkdirs();
				}else{
				     FileOutputStream entryFos = new FileOutputStream(zipFile);
				     int len;
				     byte[] b = new byte[BUFFER];
				     while((len = zis.read(b))!=-1){
				    	 entryFos.write(b, 0, len);
				     }
				     System.out.println("not Dir entry comments = " + entry.getComment());
				     zis.closeEntry();
				     entryFos.close();
				}
			}
			fis.close();
			zis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private static void downloadZipfile() {
		HttpClient client = new HttpClient();
		GetMethod get = new GetMethod(
				"http://www.pythonchallenge.com/pc/def/channel.zip");
		try {
			client.executeMethod(get);
			InputStream in = get.getResponseBodyAsStream();
			
			FileOutputStream out = new FileOutputStream(new File("D:\\temp\\channel.zip"));
			
			byte[] b = new byte[BUFFER];
			int len = 0;
			while((len=in.read(b))!=-1){
				out.write(b, 0, len);
			}
			in.close();
			out.close();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			get.releaseConnection();
		}
		System.out.println("success!");
	}

}

你可能感兴趣的:(java,apache,算法,python,Blog)