codeutil.java

来自「移动彩信管理平台」· Java 代码 · 共 238 行

JAVA
238
字号
package com.my7g.zj.mobile.mms.util;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;


public class CodeUtil {
	private final static Logger log = 
		Logger.getLogger(CodeUtil.class);
	/**
	 * Method ConvertStr
	 * Comment: 
	 * 转码函数选择不同的类型实现GBK和ISO8859_1的编码转换
	 * Input:
	 * instr	String		需转换的字符串
	 * itype	int			转换的方式
	 * @return String		转码后的字符串
	 */
	public static String ConverStr(String instr,int itype) {
      if (instr == null) return "";
      try {
      		switch (itype) {
				case 0: return instr;
				case 1: return new String(instr.getBytes("ISO8859-1"));
				case 2: return new String(instr.getBytes("GBK"));
				case 3: return new String(instr.getBytes(), "ISO8859-1");
				case 4: return new String(instr.getBytes(), "GBK");
				case 5: return new String(instr.getBytes("ISO8859-1"), "GBK");
				case 6: return new String(instr.getBytes("GBK"), "ISO8859-1");
			}
	  }
	  catch (Exception ex) {
	  		ex.printStackTrace();
	  }
      
      return null;    
	}
	
	/**
	 * 
	 * @param input
	 *            任意字符串
	 * 
	 * @return 半角字符串
	 */

	public static String toBJ(String input) {
		char[] c = input.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] == 12288) {
				c[i] = (char) 32;
				continue;
			}
			if (c[i] > 65280 && c[i] < 65375)
				c[i] = (char) (c[i] - 65248);
		}
		return new String(c);
	}
	
	/**
	 * Method fileEqual
	 * Comment: 
	 *  实现两个文件的互相比较
	 * Input:
	 * fileURL	String		文件的URL地址
	 * validateURL	String			需复核对比的文件URL地址
	 *
	 * @return boolean		true -- 文件相同
	 * 						false -- 文件不同
	 * @throws Exception 
	 *
	 */
	public static boolean fileEqual(String fileURL,String validateURL) throws Exception{
		boolean flag = true;
		BufferedInputStream editBuffer;
		BufferedInputStream validateBuffer;
		//读取修改后的文件
		try {
			editBuffer = new BufferedInputStream(new FileInputStream(fileURL));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			throw new Exception("操作文件没有找到。");
		}
		int editFileLength;
		try {
			editFileLength = editBuffer.available();
		} catch (IOException e) {
			e.printStackTrace();
			throw new Exception("文件操作失败。");
		}
		byte[] editByte = new byte[editFileLength];
		try {
			editBuffer.read(editByte, 0, editFileLength);
		} catch (IOException e) {
			e.printStackTrace();
			throw new Exception("文件操作失败。");
		}
		try {
			editBuffer.close();
		} catch (IOException e) {
			e.printStackTrace();
			throw new Exception("文件操作失败。");
		}

		// 读取复核文件
		try {
			validateBuffer = new BufferedInputStream(
					new FileInputStream(validateURL));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			throw new Exception("操作文件没有找到。");
		}
		int validateFileLength;
		try {
			validateFileLength = validateBuffer.available();
		} catch (IOException e) {
			e.printStackTrace();
			throw new Exception("文件操作失败。");
		}
		byte[] validateByte = new byte[validateFileLength];
		try {
			validateBuffer.read(validateByte, 0, validateFileLength);
		} catch (IOException e) {
			e.printStackTrace();
			throw new Exception("文件操作失败。");
		}
		try {
			validateBuffer.close();
		} catch (IOException e) {
			throw new Exception("文件操作失败。");
		}

		// 先判断两个数组长度是否相同相同则进行判断
		if (editFileLength != validateFileLength) {
			flag = false;
		} else {
			// 两个字节对象比较
			for (int i = 0; i < editByte.length; i++) {
				if (editByte[i] != validateByte[i]) {
					flag = false;
				}
			}
		}
		return flag;
	}
	/**
	 * Method fileEqual
	 * Comment: 
	 *  实现两个文件的互相比较
	 * Input:
	 * fileURL	String		文件的URL地址
	 * validateURL	String			需复核对比的文件URL地址
	 *
	 * @return boolean		true -- 相同
	 * 						false -- 不同
	 * @throws IOException 
	 *
	 */
	public static boolean objectEqual(Object obj,Object validateObj) throws IOException{
		boolean flag = true;
		//将类a放入文件BAOS1中
		ByteArrayOutputStream BAOS1 = new ByteArrayOutputStream();
		ObjectOutputStream objectOutputStream1  = 
			new ObjectOutputStream(BAOS1);
		objectOutputStream1.writeObject(obj);
		objectOutputStream1.close();
		byte[] byteFile1 = new byte[BAOS1.size()]; 
		byteFile1 = BAOS1.toByteArray();
		
		
		//将类b放入文件BAOS2中		
		ByteArrayOutputStream BAOS2 = new ByteArrayOutputStream();
		ObjectOutputStream objectOutputStream2  = 
			new ObjectOutputStream(BAOS2);
		objectOutputStream2.writeObject(validateObj);
		objectOutputStream2.close();
		BAOS2.toByteArray();
		
		byte[] byteFile2 = new byte[BAOS2.size()]; 
		byteFile2 = BAOS2.toByteArray();
		
		
		log.debug(byteFile1.length + "  " +  byteFile2.length);
		//先判断两个数组长度是否相同相同则进行判断
		if(byteFile1.length != byteFile2.length){
			String temp = "";
			for(int i = 0 ; i < byteFile1.length ; i++){
				temp = temp + byteFile1[i];
			}
			log.debug(temp);
			log.debug("");
			temp = "";
			for(int i = 0 ; i < byteFile2.length ; i++){
				temp = temp + byteFile2[i];
			}
			log.debug(temp);
			flag = false;
		}else{
			//两个字节对象比较
			for(int i = 0 ; i < byteFile1.length ; i++ ){
				if(byteFile1[i] != byteFile2[i]){
					log.debug(i + "----" + byteFile1[i]);
					log.debug(i + "----" + byteFile2[i]);
					flag = false;
				}else{

				}
			}
		}
		return flag;
	}
	public static void dispatcher(HttpServletRequest request, 
			HttpServletResponse response,String url) 
			throws ServletException, IOException{
		RequestDispatcher dispatcher = 
			request.getRequestDispatcher(url);
		dispatcher.forward(request,response);
	}
	
	
	

	
	
	

}

⌨️ 快捷键说明

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