亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gzipinputstream.java

?? 手機郵箱撒的方式方式方式的
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    		if (this.status == GZipInputStream.EXPECTING_CHECK){    			//System.out.println(this.allPocessed + " data check");    			    			this.status=GZipInputStream.FINISHED;    			    			this.allPocessed=(this.allPocessed+this.outEnd-this.lastEnd) & 4294967295L;    			if (this.hash){    		    	// lastEnd -> End in CRC32 einbeziehen    				this.crc32=ZipHelper.crc32(this.crc32Table, this.crc32, myOutBuff, this.lastEnd, this.outEnd-this.lastEnd);    			}    			    			// skip till next byte boundary, read CRC , isize    			popSmallBuffer(this.smallCodeBuffer[1]&7);    			int cCrc=popSmallBuffer(8)|(popSmallBuffer(8)<<8)|(popSmallBuffer(8)<<16)|(popSmallBuffer(8)<<24);    			int iSize=popSmallBuffer(8)|(popSmallBuffer(8)<<8)|(popSmallBuffer(8)<<16)|(popSmallBuffer(8)<<24);    			    			this.vaildData=(iSize==this.allPocessed);    			if (this.hash){    				this.vaildData &= (this.crc32==cCrc);    			}    			    			if (!this.vaildData){    				//ERROR: the data check (size & hash) are wrong    				throw new IOException("2");    			}    			    		}    		    	}    	    	// refresh the checksum at once    	if (this.status!=GZipInputStream.FINISHED){	    	this.allPocessed=(this.allPocessed+this.outEnd-this.lastEnd) & 4294967295L;	    	if (this.hash){		    	// lastEnd -> End in CRC32 einbeziehen	    		this.crc32 = ZipHelper.crc32(this.crc32Table, this.crc32, myOutBuff, this.lastEnd, this.outEnd-this.lastEnd);	    	}    	}    	    }        private void processHeader () throws IOException{    	int val;    			int HLIT; // number of miniHuff fragments		int HDIST;// number of distance codes (should somehow lead to the same)		int HCLEN;// number of length codes		int[] distHuffCode=new int[30];		int[] distHuffData=new int[30];		byte[] distHuffCodeLength=new byte[30];				int[] huffmanCode=new int[286];				// this contains the codes according to the huffman tree/mapping		int[] huffmanData=new int[286];				// this contains the data referring to the code.		byte[] huffmanCodeLength=new byte[286];				this.BFINAL= (popSmallBuffer(1)==1);			this.BTYPE=popSmallBuffer(2);				if (this.BTYPE==3){			throw new IllegalArgumentException();		} else if (this.BTYPE==1){			//System.out.println(this.allPocessed +  ": fixed tree");						ZipHelper.genFixedTree(huffmanCode, huffmanCodeLength, distHuffCode, distHuffCodeLength);			for (int i = 0; i < 286; i++) {				huffmanData[i]=i;			}			for (int i = 0; i < 30; i++) {				distHuffData[i]=i;			}						// convert literal table to tree			ZipHelper.convertTable2Tree(huffmanCode, huffmanCodeLength, huffmanData, this.huffmanTree);				    	// convert distance table to tree			ZipHelper.convertTable2Tree(distHuffCode, distHuffCodeLength, distHuffData, this.distHuffTree);					} else if(this.BTYPE==2) {			//System.out.println(this.allPocessed + ": dynamic tree");						// read/parse the length codes						HLIT=popSmallBuffer(5);				HDIST=popSmallBuffer(5);			HCLEN=popSmallBuffer(4);						// miniTree			int[] miniHuffData=     { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};			int[] seq={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};						byte[] miniHuffCodeLength=new byte[19];			int[] miniHuffCode=new int[19];						// read the miniHuffCodeLength			for (int i = 0; i < HCLEN+4; i++) {				miniHuffCodeLength[ miniHuffData[i] ]=(byte) popSmallBuffer(3);			}						ZipHelper.genHuffTree(miniHuffCode, miniHuffCodeLength);			ZipHelper.revHuffTree(miniHuffCode, miniHuffCodeLength);			short[] miniTree = new short[19*4];	    	ZipHelper.convertTable2Tree(miniHuffCode, miniHuffCodeLength, seq, miniTree);	    				// parse the length code for the normal Tree and the distance Tree using the miniTree			for (int i = 0; i < huffmanCodeLength.length; i++) {				huffmanCodeLength[i]=0;			}			for (int i = 0; i < distHuffCodeLength.length; i++) {				distHuffCodeLength[i]=0;			}			byte lastVal=0;			for (int j = 0; j < HLIT + 257 + HDIST +1;) {								if (this.smallCodeBuffer[1]<15){					refillSmallCodeBuffer( true);				}				val=ZipHelper.deHuffNext(this.smallCodeBuffer, miniTree);								// data				if (val<16){					lastVal=(byte)val;					val=1;				} else{				// repeat code					if (val==16){						val=popSmallBuffer(2)+3;					} else if (val==17){						lastVal=0;						val=popSmallBuffer(3)+3;					} else if (val==18){						lastVal=0;						val=popSmallBuffer(7)+11;					}				}				// fill the value in				for (int k = 0; k < val; k++,j++) {					if (j<HLIT + 257){						huffmanCodeLength[j]=lastVal;					} else {						distHuffCodeLength[j-(HLIT + 257)]=lastVal;					}				}							}						// final tree:		 fill this.huffmanCode this.huffmanData			ZipHelper.genHuffTree(huffmanCode, huffmanCodeLength);			for (int i = 0; i < huffmanData.length; i++) {				huffmanData[i]=i;			}			// converting literal table to tree			ZipHelper.revHuffTree(huffmanCode, huffmanCodeLength);			ZipHelper.convertTable2Tree(huffmanCode, huffmanCodeLength, huffmanData, this.huffmanTree);						// Distance Tree	    	// distHuffData for non fixed distance tree			// this.distHuffCodeLength is read together with this.huffmanCodeLength	    	for (int j = 0; j < distHuffCode.length; j++) {	    		distHuffData[j]=j;			}	    	ZipHelper.genHuffTree(distHuffCode, distHuffCodeLength);	    	ZipHelper.revHuffTree(distHuffCode, distHuffCodeLength);	    	ZipHelper.convertTable2Tree(distHuffCode, distHuffCodeLength, distHuffData, this.distHuffTree);	    			} else{			// just skip bits up to the next boundary			popSmallBuffer(this.smallCodeBuffer[1]&7); //&7 == %8						// read and check the header 			this.B0len=popSmallBuffer(8)|popSmallBuffer(8)<<8;			if (this.smallCodeBuffer[1]<15){				refillSmallCodeBuffer( true);			}			if (this.B0len + (popSmallBuffer(8)|popSmallBuffer(8)<<8) != 0xffff){				//Error:  the header for the uncompressed is wrong;				throw new IOException("3");							}						// clear the buffer			while(this.smallCodeBuffer[1]!=0 && this.B0len>0){				val = popSmallBuffer(8);				this.window[this.pProcessed]=(byte)val;				this.pProcessed=(this.pProcessed +1) & 32767; // == % (1<<15);								this.outBuff[this.outEnd]=(byte)val;				this.outEnd++;								this.B0len--;			}					}				this.status=GZipInputStream.EXPECTING_DATA;				distHuffCode=null;		distHuffData=null;		distHuffCodeLength=null;				huffmanCodeLength=null;		huffmanCode=null;		huffmanData=null;	}         /**     * Checks if the current status is valid     *      * @return -1 if the stream is finished, 1 if the current data is valid, 0 if not     * @throws IOException     */    public int validData() throws IOException{    	inflate();    	if (this.status!=GZipInputStream.FINISHED){    		return -1;    	}  else {    		if (this.vaildData){    			return 1;    		} else {    			return 0;    		}    	}    }        private int popSmallBuffer(long len) throws IOException{    	    	if (len==0) return 0;    			if (this.smallCodeBuffer[1]<len){			refillSmallCodeBuffer( true);		}		    	int ret= (int) (this.smallCodeBuffer[0] & ((1<<len)-1));		this.smallCodeBuffer[0]>>>=len;		this.smallCodeBuffer[1]-=len;    			return ret;    	    	    }    /**     * This function refills the smallCodeBuffer with data from the input     * stream.     *     */    byte[] tmpRef = new byte[8]; // just one allocation    /**      *  Refill mini internal buffer used for internal decoding.      *  Only (nearly) function that reads input.     *      * @param canBlock If true check if datas are available     * @return true if any pending data are in buffer     * @throws java.io.IOException     */    private boolean refillSmallCodeBuffer( boolean canBlock) throws IOException{    	// (re)fill this.smallBuffer reading this.inStream    	if (this.inStreamEnded==false){	    		    	int wanted=(int)(BL-this.smallCodeBuffer[1]/8-1);	    	int count = 0;                int avail = 9999;                if ( canBlock || ((avail=this.inStream.available()) >= wanted) )                     count= this.inStream.read(this.tmpRef,0,wanted);	    		    	if (count == -1){	    		this.inStreamEnded=true;	    	}	    				for (int i = 0; i < count; i++) {					this.smallCodeBuffer[0]&= ~( (long)0xff << this.smallCodeBuffer[1]);					if (this.tmpRef[i]<0){						this.smallCodeBuffer[0]|= (long)(this.tmpRef[i]+256) << this.smallCodeBuffer[1];					}else{						this.smallCodeBuffer[0]|= (long)this.tmpRef[i] << this.smallCodeBuffer[1];					}					this.smallCodeBuffer[1]+=8;			}//            return avail > 8 + count;              return avail > 0;    	}        return false; // Stream closed    }        /**     * This function fills the buffer and returns the amount of      * avialable data. Therefore it will always return the buffer     * size that was given to the constructor.     */    public int available() throws IOException {//    	if ((this.outEnd-this.outStart)<this.outBuff.length-300){//    		inflate();//    	}        // Alf - inflate only when needed    	if (this.outEnd==this.outStart){    		inflate();    	}    	return this.outEnd-this.outStart;    }        public long skip(long n) throws IOException{    	long skipped=0;    	byte b[]=new byte[this.buffsize];    			while(skipped<n && this.status != GZipInputStream.FINISHED){			skipped+=this.read(b);		}    	    	return skipped;    }    	public int read() throws IOException {    	if ((this.outEnd-this.outStart)==0){    		inflate();    	}    	if(this.outEnd-this.outStart==0 && this.inStreamEnded){    		// the input stream ended    		return -1;		} else {			return (this.outBuff[this.outStart++] + 256) & 255;		}	}	    public int read(byte b[]) throws IOException {    	return read(b, 0, b.length);    }        /* (non-Javadoc)     * @see java.io.InputStream#read(byte[], int, int)     */    public int read(byte b[], int off, int len) throws IOException  { 	    	// inflate as much as possible//    	if ((this.outEnd-this.outStart)<this.outBuff.length-300){//  		inflate();//    	}        // Alf: Infalte only when needed    	if (this.outEnd==this.outStart) {  		inflate();    	}    	    	// we can process just min(b.length, this.avialableBytes) Bytes    	int av=this.available();    	int copyBytes= len > av ? av: len;    	    	// copy avialable data from the ouputBuffer to 'b'    	// here ocurred an error once    	System.arraycopy(this.outBuff, this.outStart, b, off, copyBytes);    	    	this.outStart+=copyBytes;    	    	// return the number of copied bytes    	if(copyBytes!=0){    		return copyBytes;    	} else {    		return -1;    	}    }    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色国产综合视频| 日本大香伊一区二区三区| 国产a视频精品免费观看| 国产99久久久国产精品免费看| 国产一区二区三区在线看麻豆| 国产sm精品调教视频网站| 色哟哟日韩精品| 日韩欧美在线综合网| 日韩精品自拍偷拍| 久久亚洲私人国产精品va媚药| 中文字幕中文字幕在线一区| 天天色 色综合| 成人自拍视频在线| 日韩一区二区精品| 亚洲综合色自拍一区| 亚洲最大成人网4388xx| 蜜臀av亚洲一区中文字幕| 成人国产精品免费观看| 日韩欧美一区二区三区在线| 亚洲激情自拍视频| 国产美女一区二区三区| 欧美伦理电影网| 亚洲人亚洲人成电影网站色| 美女脱光内衣内裤视频久久网站| 久久99热国产| 欧美妇女性影城| 一区二区三区日韩| 成人亚洲一区二区一| 欧美日韩国产经典色站一区二区三区| 国产丝袜美腿一区二区三区| 亚洲狼人国产精品| 不卡的av中国片| 国产午夜精品美女毛片视频| 麻豆精品一区二区三区| 91精品中文字幕一区二区三区| 亚洲男同性恋视频| 国产精品亚洲视频| 久久婷婷一区二区三区| 久久超碰97中文字幕| 91麻豆精品国产91久久久久久久久 | 717成人午夜免费福利电影| 亚洲欧洲日产国码二区| 国产高清一区日本| 2023国产一二三区日本精品2022| 午夜精品一区在线观看| 欧美久久高跟鞋激| 五月天中文字幕一区二区| 欧美性色黄大片| 亚洲天堂精品在线观看| 色婷婷亚洲一区二区三区| 亚洲欧美电影一区二区| 色综合久久综合网| 亚洲精品网站在线观看| 在线精品亚洲一区二区不卡| 亚洲国产精品一区二区www在线| 99麻豆久久久国产精品免费| 日本一区二区高清| 一本到不卡免费一区二区| 亚洲最新视频在线播放| 欧美一区三区四区| 韩国三级在线一区| 国产精品美女久久久久av爽李琼 | 国产一区二区不卡在线| 久久久久国产精品厨房| 岛国一区二区三区| 亚洲啪啪综合av一区二区三区| 91丨九色丨蝌蚪丨老版| 亚洲国产日韩一区二区| 日韩一区二区麻豆国产| 国产在线观看一区二区| 777亚洲妇女| 国产精品一区二区三区四区| 最新日韩在线视频| 欧美日本韩国一区| 国产一区二区视频在线| 亚洲欧美日韩一区二区| 欧美精品乱码久久久久久按摩| 日本不卡1234视频| 6080亚洲精品一区二区| 国产做a爰片久久毛片| 国产精品久久777777| 欧美在线免费观看亚洲| 激情小说亚洲一区| 亚洲欧美怡红院| 日韩一级二级三级精品视频| 国产一区二区91| 亚洲线精品一区二区三区| 精品国精品自拍自在线| 波多野结衣在线一区| 亚洲777理论| 国产欧美精品一区| 99久久99久久免费精品蜜臀| 香蕉久久夜色精品国产使用方法| 亚洲精品一区二区三区99| 91久久香蕉国产日韩欧美9色| 日本系列欧美系列| 亚洲色图欧美在线| 国产日韩欧美a| 欧美性猛交xxxx乱大交退制版 | 亚洲一区二区三区小说| 精品久久久久av影院| 在线日韩一区二区| 国产99久久久国产精品潘金网站| 天堂精品中文字幕在线| 亚洲精品一区二区三区精华液 | 欧美日韩在线播放三区| 国产a久久麻豆| 麻豆91在线观看| 亚洲天堂2014| 日韩一级二级三级精品视频| 欧美在线视频你懂得| www.综合网.com| 国产精品自拍三区| 毛片不卡一区二区| 日日骚欧美日韩| 亚洲人成网站色在线观看| 国产亚洲1区2区3区| 欧美一区二区三区视频在线| 91福利国产成人精品照片| 高清shemale亚洲人妖| 奇米一区二区三区| 亚洲女厕所小便bbb| 国产精品婷婷午夜在线观看| 久久网站最新地址| 欧美丰满一区二区免费视频| 在线一区二区三区四区五区| 99国产精品久久| 懂色av中文一区二区三区| 91在线观看美女| 欧美日韩国产一区二区三区地区| 4hu四虎永久在线影院成人| 日韩精品一区二区三区老鸭窝| 精品久久国产字幕高潮| 国产精品视频一区二区三区不卡| 国产精品不卡一区| 婷婷成人激情在线网| 久久99精品久久久久久久久久久久| 国产一区二区三区四区在线观看 | 欧美日韩视频不卡| 99视频精品免费视频| 精品视频全国免费看| 欧美日韩亚洲综合| 色噜噜狠狠一区二区三区果冻| 欧美一区二区三区免费视频 | 日本sm残虐另类| 久草这里只有精品视频| 国产在线精品一区二区三区不卡| 国模一区二区三区白浆| 懂色av一区二区夜夜嗨| 91精彩视频在线观看| 欧美福利视频导航| 国产精品视频看| 亚洲国产三级在线| 久久av老司机精品网站导航| 丁香激情综合五月| 91精品国产全国免费观看| 精品99一区二区| 国产精品久久一卡二卡| 亚洲曰韩产成在线| 国内精品国产三级国产a久久| 粉嫩久久99精品久久久久久夜| 99久久99久久精品免费看蜜桃 | 一本大道久久a久久综合| 精品视频一区三区九区| 91精品国产色综合久久久蜜香臀| 日韩精品一区二区三区蜜臀| 国产精品麻豆99久久久久久| 亚洲最新视频在线观看| 亚洲123区在线观看| 成人激情电影免费在线观看| 欧美在线制服丝袜| 久久综合国产精品| 亚洲一区二区高清| 国产成+人+日韩+欧美+亚洲| 欧美色成人综合| 久久久久久麻豆| 激情综合网激情| 在线观看视频欧美| 国产亚洲一二三区| 亚欧色一区w666天堂| 一本到高清视频免费精品| 久久久久久久久久久电影| 亚洲综合丝袜美腿| 香蕉成人伊视频在线观看| 91丨九色丨国产丨porny| 日韩三级精品电影久久久 | 裸体在线国模精品偷拍| 99这里只有精品| 91精品午夜视频| 亚洲丰满少妇videoshd| www.在线欧美| 国产亚洲一区二区在线观看| 免费精品99久久国产综合精品| 91在线porny国产在线看| 国产三级一区二区三区| 夫妻av一区二区| 久久综合网色—综合色88| 日本女人一区二区三区| 欧美另类高清zo欧美| 亚洲高清不卡在线观看|