⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filenamedecoder.java

📁 这是架包java-unrar-0.2.jar的源码
💻 JAVA
字号:
/* *  * Original author: alpha_lam * Creation date: ? * * Source: $HeadURL$ * Last changed: $LastChangedDate$ *  *  * the unrar licence applies to all junrar source and binary distributions  * you are not allowed to use this source to re-create the RAR compression algorithm * * Here some html entities which can be used for escaping javadoc tags: * "&":  "&#038;" or "&amp;" * "<":  "&#060;" or "&lt;" * ">":  "&#062;" or "&gt;" * "@":  "&#064;"  */package de.innosystec.unrar.rarfile;public class FileNameDecoder {	public static int getChar(byte [] name,int pos){ 		return name[pos]&0xff; 	} 	public static String decode(byte [] name,int encPos){ 		int decPos = 0; 		int flags = 0; 		int flagBits = 0; 		int low = 0; 		int high = 0; 		int highByte = getChar(name,encPos++); 		StringBuffer buf = new StringBuffer(); 		while(encPos < name.length){ 			if(flagBits == 0){ 				flags = getChar(name,encPos++); 				flagBits = 8; 			} 			switch(flags >> 6){ 			case 0: 				buf.append((char)(getChar(name,encPos++))); 				++decPos; 				break; 			case 1: 				buf.append((char)(getChar(name,encPos++)+(highByte<<8))); 				++decPos; 				break; 			case 2: 				low = getChar(name,encPos); 				high = getChar(name,encPos+1); 				buf.append((char)((high << 8) + low)); 				++decPos; 				encPos += 2; 				break; 			case 3: 				int length = getChar(name,encPos++); 				if((length&0x80)!=0){ 					int correction = getChar(name,encPos++); 					for(length=(length&0x7f)+2;length>0&&decPos<name.length;length--,decPos++){ 						low = (getChar(name,decPos) + correction)&0xff; 						buf.append((char)((highByte << 8) + low)); 					} 				}else{ 					for(length+=2;length>0&&decPos<name.length;length--,decPos++){ 						buf.append((char)(getChar(name,decPos))); 					} 				} 				break; 			} 			flags = (flags << 2) & 0xff; 			flagBits -= 2; 		} 		return buf.toString(); 	} }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -