Java 系统工具类

package com.yss.framework.api.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import com.yss.framework.api.logger.LogManager;

/**
 * 
 * <p>
 * Title:
 * </p>
 * <p>
 * Description: 纯粹与web或者java相关的处理
 * </p>
 * <p>
 * Copyright: Copyright (c) 2003
 * </p>
 * <p>
 * Company: Ysstech
 * </p>
 * 
 * @author alex
 * @version 1.0
 */
public class SysUtil {

	// 应用服务器枚举
	public static enum WebServer {
		TOMCAT, WEBSPHERE, WEBLOGIC
	}

	// 服务端操做系统枚举
	public static enum OS {
		WINDOWS, LINUX, UNIX
	}

	/**
	 * 返回操做类型枚举
	 * 
	 * @return 操做类型枚举
	 */
	public static OS getOSName() {
		String os = System.getProperty("os.name"); //
		if (os.toLowerCase().indexOf("linux") >= 0) {
			return OS.LINUX;
		} else if (os.toLowerCase().indexOf("windows") >= 0) {
			return OS.WINDOWS;
		} else if (os.toLowerCase().indexOf("unix") >= 0) {
			return OS.UNIX;
		} else {
			return null;
		} // end if
	}

	/**
	 * 以字节流方式获取request内的数据,返回字节数组
	 * 
	 * @param request
	 * @return 字节数组
	 * @throws IOException
	 */
	public static final byte[] getBytesFromClient(HttpServletRequest request)
			throws IOException {
		InputStream is = (InputStream) request.getInputStream(); // 请求字节输入流
		int size = request.getContentLength(); // 请求数据大小
		int count = 0; //
		int lenread = 0; //

		if (size < 0) {
			return new byte[0];
		}

		byte[] buffer = new byte[size]; // 缓冲大小

		while (count < size) { // 用while循环考虑到断线等因素一次没法读完。。。。
			lenread = is.read(buffer, count, size - count);
			if (lenread < 0) { // 考虑可能存在的提早结束状况,是否须要报错?
				break;
			} // end if
			count += lenread;
		} // end while

		if (count == size) {
			return buffer;
		}

		byte[] buf = new byte[count]; // 考虑可能存在的提早结束状况

		System.arraycopy(buffer, 0, buf, 0, count);
		return buf;
	}

	/**
	 * 以字节流方式获取request内的数据,返回String
	 * 
	 * @param request
	 * @return 请求字符串
	 * @throws IOException
	 */
	public static final String getBytesStringFromClient(
			HttpServletRequest request) throws IOException {
		return new String(getBytesFromClient(request), "UTF-8");
	}

	/**
	 * 将指定的字节流转换成字符串
	 * 
	 * @param byteRequest
	 *            byte类型的字节流
	 * @return
	 * @throws IOException
	 */
	public static final String getBytesStringFromClient(byte[] byteRequest)
			throws IOException {
		return new String(byteRequest, "UTF-8");
	}

	/**
	 * 返回request对应的Web应用的Root部分地址,包含了/,用于提供相对路径以组成URL
	 * 
	 * @param request
	 * @param bSlash
	 * @return request对应的Web应用的Root部分地址
	 */
	public static final String getURLRoot(HttpServletRequest request,
			boolean bSlash) {
		StringBuffer surl = request.getRequestURL(); // 请求URL
		String stmp = request.getServletPath(); // 请求路径
		surl.setLength(surl.length() - stmp.length() + (bSlash ? 1 : 0));
		return surl.toString();
	}

	/**
	 * 返回request对应的Web应用的Root部分地址
	 * 
	 * @param request
	 *            HTTP Request
	 * @return request对应的Web应用的Root部分地址
	 */
	public static final String getURLRoot(HttpServletRequest request) {
		return getURLRoot(request, false);
	}

	public static boolean isBaseType(Class<?> clazz) {
		boolean flag = false;

		if (Integer.class.equals(clazz)) {
			flag = true;
		} else if (Double.class.equals(clazz)) {
			flag = true;
		} else if (Short.class.equals(clazz)) {
			flag = true;
		} else if (Long.class.equals(clazz)) {
			flag = true;
		} else if (Float.class.equals(clazz)) {
			flag = true;
		} else if (Date.class.equals(clazz)) {
			flag = true;
		} else if (String.class.equals(clazz)) {
			flag = true;
		} else if (java.sql.Date.class.equals(clazz)) {
			flag = true;
		} else if (BigDecimal.class.equals(clazz)) {
			flag = true;
		} else if (String[].class.equals(clazz)) {
			flag = true;
		} else {
			flag = clazz.isPrimitive();
		}

		return flag;
	}

	public static Properties ReadProperties(String filePath) {
		File pFile = null;
		Properties prop = null;
		FileInputStream in = null;

		try {
			pFile = new File(filePath);
			in = new FileInputStream(pFile);
			if (in != null) {
				prop = new Properties();
				prop.load(in);
			}
		} catch (Exception e) {
			LogManager.getLogger(SysUtil.class).log("文件读取出错!", e);
		}

		return prop;
	}
}
相关文章
相关标签/搜索