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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pakutil.java

?? j2me中制作Pak文件,來自www.matrix.org.cn
?? JAVA
字號(hào):
package cn.org.matrix.gmatrix.gameLab.util.pak;

import java.io.*;
import java.util.Vector;
/**
 * Pak工具類
 * 功能:
 * 從Pak文件中取出png圖片,構(gòu)造byte數(shù)組(可以用來構(gòu)造Image對(duì)象)
 * @author cleverpig
 *
 */
public class PakUtil {
	
	public PakUtil(){
	}
	
	/**
	 * 計(jì)算文件位移的起始點(diǎn)
	 * @return 文件位移的起始點(diǎn)
	 */
	private long workOutOffsetStart(PakHeader header){
		//計(jì)算出文件頭+文件table的長(zhǎng)度
		return PakHeader.size()+header.getNumFileTableEntries()*PakFileTable.size();
	}
	
	/**
	 * 從DataInputStream讀取char數(shù)組
	 * @param dis DataInputStream
	 * @param readLength 讀取長(zhǎng)度
	 * @return char數(shù)組
	 * @throws Exception
	 */
	private char[] readCharArray(DataInputStream dis,int readLength) throws Exception{
		char[] readCharArray=new char[readLength];
		
		for(int i=0;i<readLength;i++){
			readCharArray[i]=dis.readChar();
		}
		return readCharArray;
	}
	
	/**
	 * 從PAK文件中讀取文件頭
	 * @param dis DataInputStream
	 * @return PakHeader
	 * @throws Exception
	 */
	private PakHeader readHeader(DataInputStream dis) throws Exception{
		PakHeader header=new PakHeader();
		char[] signature=readCharArray(dis,PakHeader.SIGNATURE_LENGTH);
		header.setSignature(signature);
		header.setVersion(dis.readFloat());
		header.setNumFileTableEntries(dis.readLong());
		header.setCipherAction(dis.readByte());
		header.setCipherValue(dis.readByte());
		char[] uniqueID=readCharArray(dis,PakHeader.UNIQUEID_LENGTH);
		header.setUniqueID(uniqueID);
		header.setReserved(dis.readLong());
		return header;
	}
	
	/**
	 * 讀取所有的文件table
	 * @param dis DataInputStream
	 * @param fileTableNumber 文件表總數(shù)
	 * @return 文件table數(shù)組
	 * @throws Exception
	 */
	private PakFileTable[] readFileTable(DataInputStream dis,int fileTableNumber) throws Exception{
		PakFileTable[] fileTable=new PakFileTable[fileTableNumber];
		for(int i=0;i<fileTableNumber;i++){
			PakFileTable ft=new PakFileTable();
			ft.setFileName(readCharArray(dis,PakFileTable.FILENAME_LENGTH));
			ft.setFileSize(dis.readLong());
			ft.setOffSet(dis.readLong());
			fileTable[i]=ft;
		}
		return fileTable;
	}
	
	/**
	 * 從pak文件讀取文件到byte數(shù)組
	 * @param dis DataInputStream
	 * @param fileTable PakFileTable
	 * @return byte數(shù)組
	 * @throws Exception
	 */
	private byte[] readFileFromPak(DataInputStream dis,PakHeader header,PakFileTable fileTable) throws Exception{
		dis.skip(fileTable.getOffSet()-workOutOffsetStart(header));
		//
		int fileLength=(int)fileTable.getFileSize();
		byte[] fileBuff=new byte[fileLength];
		int readLength=dis.read(fileBuff,0,fileLength);
		if (readLength<fileLength){
			System.out.println("讀取數(shù)據(jù)長(zhǎng)度不正確");
			return null;
		}
		else{
			decryptBuff(fileBuff,readLength,header);
		}
		return fileBuff;
	}
	
	/**
	 * 使用文件頭中的密碼對(duì)數(shù)據(jù)進(jìn)行解密
	 * @param buff 被解密的數(shù)據(jù)
	 * @param buffLength 數(shù)據(jù)的長(zhǎng)度
	 * @param header 文件頭
	 */
	private void decryptBuff(byte[] buff,int buffLength,PakHeader header){
		for(int i=0;i<buffLength;i++){
			switch(header.getCipherAction()){
			case PakHeader.ADDITION_CIPHERACTION:
				buff[i]-=header.getCipherValue();
				break;
			case PakHeader.SUBTRACT_CIHOERACTION:
				buff[i]+=header.getCipherValue();
				break;
			}
		}
	}
	
	/**
	 * 從pak文件中取出指定的文件到byte數(shù)組
	 * @param pakResourceURL  pak文件的資源路徑
	 * @param extractResourceName pak文件中將要被取出的文件名
	 * @return byte數(shù)組
	 * @throws Exception
	 */
	public byte[] extractResourceFromPak(String pakResourceURL
			,String extractResourceName) throws Exception{
		InputStream is=this.getClass().getResourceAsStream(pakResourceURL);
		DataInputStream dis=new DataInputStream(is);
		PakHeader header=readHeader(dis);
//		System.out.println("文件頭:");
//		System.out.println(header);
		PakFileTable[] fileTable=readFileTable(dis,(int)header.getNumFileTableEntries());
//		for(int i=0;i<fileTable.length;i++){
//			System.out.println("文件table["+i+"]:");
//			System.out.println(fileTable[i]);
//		}
		boolean find=false;
		int fileIndex=0;
		for(int i=0;i<fileTable.length;i++){
			String fileName=new String(fileTable[i].getFileName()).trim();
			if (fileName.equals(extractResourceName)){
				find=true;
				fileIndex=i;
				break;
			}
		}
		if (find==false){
			System.out.println("沒有找到指定的文件");
			return null;
		}
		else{
			byte[] buff=readFileFromPak(dis,header,fileTable[fileIndex]);
			return buff;
		}
	}
	
	
	/**
	 * 從pak文件中取出指定的Pak文件的信息
	 * @param pakResourcePath  pak文件資源路徑
	 * @return 裝載文件頭和文件table數(shù)組的Vector
	 * @throws Exception
	 */
	public Vector showPakFileInfo(String pakResourcePath) throws Exception{
		InputStream is=this.getClass().getResourceAsStream(pakResourcePath);
		DataInputStream dis=new DataInputStream(is);
		
		PakHeader header=readHeader(dis);
		PakFileTable[] fileTable=readFileTable(dis,(int)header.getNumFileTableEntries());

		Vector result=new Vector();
		result.addElement(header);
		result.addElement(fileTable);
		return result;
	}
	
	public static void main(String[] argv) throws Exception{
		PakUtil pu=new PakUtil();
		String extractResourcePath="/test.pak";
		//從Pak文件中取出所有的圖片文件
		Vector pakInfo=pu.showPakFileInfo(extractResourcePath);
		PakHeader header=(PakHeader)pakInfo.elementAt(0);
		System.out.println("Pak文件信息:");
		System.out.println("文件頭:");
		System.out.println(header);
		
		PakFileTable[] fileTable=(PakFileTable[])pakInfo.elementAt(1);
		for(int i=0;i<fileTable.length;i++){
			System.out.println("文件table["+i+"]:");
			System.out.println(fileTable[i]);
		}
		
		String restoreFileName=null;
		byte[] fileBuff=null;
		for(int i=0;i<fileTable.length;i++){
			restoreFileName=new String(fileTable[i].getFileName()).trim();
			System.out.println("從Pak文件中取出"+restoreFileName+"文件數(shù)據(jù)...");
			fileBuff=pu.extractResourceFromPak(extractResourcePath,restoreFileName);
			System.out.println("從Pak文件中取出"+restoreFileName+"文件數(shù)據(jù)完成");
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人7777| 中文av一区二区| 亚洲国产另类av| 欧美亚洲精品一区| 天天免费综合色| 欧美乱妇20p| 日av在线不卡| 久久青草欧美一区二区三区| 国产福利电影一区二区三区| 中文字幕 久热精品 视频在线 | 成人h动漫精品一区二| 久久久久久久久久看片| 国产精品亚洲成人| 国产精品乱码人人做人人爱| 97超碰欧美中文字幕| 亚洲国产精品视频| 一区二区三区av电影| 在线免费不卡电影| 免费成人性网站| 国产日产亚洲精品系列| 91久久香蕉国产日韩欧美9色| 亚洲第一二三四区| 精品国产一区二区三区av性色| 成人永久aaa| 午夜一区二区三区视频| 精品99久久久久久| 一本久道久久综合中文字幕 | 国产人妖乱国产精品人妖| 99国产欧美另类久久久精品| 亚洲gay无套男同| 久久久精品综合| 在线观看亚洲一区| 国产毛片精品视频| 性久久久久久久久| 国产精品乱码妇女bbbb| 3d成人动漫网站| 97精品国产露脸对白| 久久99热这里只有精品| 亚洲精品精品亚洲| 久久久99精品久久| 91精品国产91久久久久久一区二区 | 久久精品人人爽人人爽| 色噜噜久久综合| 国产精品亚洲一区二区三区在线| 亚洲一区在线观看视频| 日韩国产在线观看一区| 国产精品的网站| 精品欧美乱码久久久久久| 91福利精品视频| 成人美女视频在线观看18| 美日韩黄色大片| 亚洲午夜羞羞片| 国产精品拍天天在线| 日韩免费电影一区| 欧美日韩精品一区二区天天拍小说| 福利电影一区二区| 寂寞少妇一区二区三区| 日韩av一区二| 亚洲成年人影院| 亚洲免费av高清| 国产欧美精品一区二区色综合 | 2021中文字幕一区亚洲| 欧美日韩免费电影| 色婷婷av一区二区三区gif| 成人性生交大片免费| 国内国产精品久久| 老司机免费视频一区二区三区| 午夜亚洲福利老司机| 亚洲另类色综合网站| 最近中文字幕一区二区三区| 欧美国产日本视频| 国产欧美一区二区三区在线老狼 | 日本久久精品电影| 久久婷婷国产综合精品青草| 欧美一区二区三区小说| 欧美日韩免费视频| 欧美天堂一区二区三区| 欧美影视一区在线| 欧美性色综合网| 欧美亚洲图片小说| 欧美片在线播放| 在线播放91灌醉迷j高跟美女 | 亚洲高清在线精品| 一区二区三区鲁丝不卡| 一区二区成人在线视频| 亚洲午夜一二三区视频| 午夜在线电影亚洲一区| 日本不卡一区二区| 日本中文一区二区三区| 久久国产综合精品| 国产在线看一区| 国产成人av网站| va亚洲va日韩不卡在线观看| 91视频com| 欧美猛男超大videosgay| 在线不卡a资源高清| 欧美不卡激情三级在线观看| 久久久久亚洲综合| 国产精品国产a| 亚洲宅男天堂在线观看无病毒| 亚洲va天堂va国产va久| 欧美探花视频资源| 在线综合亚洲欧美在线视频| 欧美大白屁股肥臀xxxxxx| 国产免费久久精品| 亚洲激情第一区| 日本网站在线观看一区二区三区| 久久99热99| eeuss影院一区二区三区| 欧美视频中文一区二区三区在线观看 | 国产suv精品一区二区三区| 成人美女视频在线观看| 欧美日韩三级一区| 久久综合一区二区| 日韩理论片一区二区| 日韩高清不卡一区二区三区| 国产成人免费av在线| 欧洲视频一区二区| 久久蜜臀精品av| 一区二区三区精品在线| 国产一区二区三区在线观看免费视频 | 色综合久久久久综合99| 欧美一卡二卡三卡四卡| 国产精品欧美精品| 日韩黄色在线观看| www.日韩在线| 欧美一区二区三区小说| 中文字幕中文字幕一区二区| 亚洲综合丁香婷婷六月香| 国产真实乱子伦精品视频| 91福利视频在线| 日韩 欧美一区二区三区| 不卡视频免费播放| 日韩精品中文字幕在线一区| 亚洲欧美偷拍另类a∨色屁股| 久久成人18免费观看| 欧美亚洲动漫精品| 国产精品美日韩| 裸体歌舞表演一区二区| 欧美午夜在线观看| 国产精品久久久久四虎| 激情综合色综合久久| 欧美日韩精品综合在线| 亚洲视频在线观看一区| 国产丶欧美丶日本不卡视频| 欧美一区二区三区四区视频| 曰韩精品一区二区| 成+人+亚洲+综合天堂| 26uuu亚洲| 免费视频最近日韩| 欧美色视频在线| 亚洲三级在线播放| 成人一道本在线| 26uuu色噜噜精品一区二区| 日韩极品在线观看| 欧美日韩成人在线一区| 亚洲精品成人精品456| 波多野结衣的一区二区三区| 久久久亚洲综合| 激情图区综合网| 日韩欧美久久一区| 免费观看成人av| 欧美一区二区久久| 水蜜桃久久夜色精品一区的特点| 在线亚洲欧美专区二区| 亚洲激情校园春色| 色婷婷av一区二区三区软件| 国产美女av一区二区三区| 精品久久久三级丝袜| 麻豆精品在线看| 精品捆绑美女sm三区| 久久av资源站| 久久久精品tv| 国产成人高清在线| 国产精品久久久久一区二区三区| 成人网在线免费视频| 国产精品美女久久久久久久网站| 国产aⅴ综合色| 中文字幕在线不卡视频| 成人av资源站| 樱花影视一区二区| 欧美男同性恋视频网站| 日韩av午夜在线观看| 欧美xxxxxxxxx| 国产乱码一区二区三区| 国产精品色哟哟网站| 99精品国产91久久久久久| 亚洲综合在线五月| 91精品免费在线| 韩国三级在线一区| 国产精品网站一区| 色94色欧美sute亚洲线路二| 五月婷婷激情综合| 久久综合五月天婷婷伊人| 成人av综合在线| 亚洲一二三专区| 日韩精品一区二区三区四区视频| 国产精品资源在线看| 亚洲蜜臀av乱码久久精品| 欧美日韩mp4|