`
newleague
  • 浏览: 1505074 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

数据类型转换源码

阅读更多

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.Random;
import java.util.StringTokenizer;
import java.util.TimeZone;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipOutputStream;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.SystemUtils;
import org.apache.log4j.Logger;
import org.apache.commons.lang.StringUtils;

import com.launch.x431.business.sysmanage.bizbean.SysManageFacade;

/**
 * <p>
 * Title: 表单字段的转化(乱码------>正常码)
 * </p>
 * <p>
 * Description: 数据类型转换
 * </p>
 * <p>
 * Copyright: Copyright (c) 2004
 * </p>
 * <p>
 * Company:
 * </p>
 *
 * @author xiao
 * @version 1.0
 */

public class ValueConvertor {
 private static Logger log = Logger.getLogger(ValueConvertor.class);

 public ValueConvertor() {
 }

 /**
  * 作用是把有乱码的中文字符串转化为正常的中文字符串
  *
  * @param str
  * @return
  */

 public static String toChineseString(String str) {
  String tmpString = null;
  try {
   tmpString = (str == null || str.equals("")) ? null : new String(
     str.trim().getBytes("8859_1"), "GB2312");
  } catch (Exception e) {
   log.error("Encoding Err...");
  }
  return tmpString;
 }

 /**
  * 作用是把有乱码的中文字符串转化为正常的中文字符串 系统(Tomcat)字符 转成 页面字符
  *
  * @param str
  * @return "" 在传值需要如此,而不是null
  */

 public static String toChineseString2(String str) {
  String tmpString = null;

  try {

   tmpString = (str == null || str.equals("")) ? "" : new String(
     str.trim().getBytes("GBK"),
     System.getProperty("file.encoding"));
  } catch (Exception e) {
   log.error("Encoding Err...");
  }

  return tmpString;
 }

 /**
  * 解决下载时 乱码问题
  *
  * @param s
  * @return
  */

 public static String toUtf8String(String s) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < s.length(); i++) {
   char c = s.charAt(i);
   if (c >= 0 && c <= 255) {
    sb.append(c);
   } else {
    byte[] b;
    try {

     b = Character.toString(c).getBytes("utf-8");

    } catch (Exception ex) {
     log.error(ex);
     b = new byte[0];
    }
    for (int j = 0; j < b.length; j++) {
     int k = b[j];
     if (k < 0)
      k += 256;
     sb.append("%" + Integer.toHexString(k).toUpperCase());
    }
   }
  }
  return sb.toString();
 }

 /**
  * 转成 BigDecimal类型
  *
  * @param str
  * @return
  */
 public static BigDecimal toBigDecimal(String str) {
  BigDecimal temp;

  temp = new BigDecimal((str == null || str.equals("")) ? "0" : str);

  return temp;
 }

 /**
  * 转成 Long类型
  *
  * @param str
  * @return
  */
 public static Long toLong(String str) {

  Long temp;
  temp = new Long((str == null || str.equals("")) ? "0" : str);
  return temp;
 }

 /**
  * 转成 Double类型
  *
  * @param str
  * @return
  */
 public static Double toDouble(String str) {

  Double temp;
  temp = new Double((str == null || str.equals("")) ? "0" : str);
  return temp;
 }

 /**
  * 转成 Date类型
  *
  * @param str
  * @return
  */
 public static Date toDate(String str) {

  Date temp;
  if (str == null || str.equals("")) {
   temp = new Date(System.currentTimeMillis());
   // log.error("日期 类型是 " +str);
  } else {
   // log.error("日期 类型是 " +str);
   temp = Date.valueOf(str);
  }

  return temp;
 }

 /**
  * Long 转成 String类型
  *
  * @param l
  * @return
  */
 public static String longtoString(Long longvalue) {
  String str = null;
  str = (null == longvalue) ? "" : longvalue.toString();
  return str;
 }

 /**
  * Date 转成 String类型
  *
  * @param datevalue
  * @return
  */
 public static String datetoString(java.util.Date datevalue) {
  String str = null;
  str = (null == datevalue) ? "" : datevalue.toString();
  return str;
 }

 /**
  * BigDecimal 转成 String 类型
  *
  * @param begdecimalvalue
  * @return
  */
 public static String bigdecimaltoString(BigDecimal begdecimalvalue) {
  String str = null;
  str = (null == begdecimalvalue) ? "" : begdecimalvalue.toString();
  return str;
 }

 /**
  * 判断是否为空类型
  *
  * @param str
  * @return
  */

 public static boolean notNull(String str) {
  return !(str == null || str.trim().equals(""));
 }

 /**
  * 判断是否为空类型
  *
  * @param str[]
  * @return
  */

 public static boolean notNull(String str[]) {
  return !(str == null || str.length <= 0);
 }

 /**
  * 为页面转化用 如果为空 转成空字符串
  *
  * @param str
  * @return
  */

 public static String objectToString(Object str) {
  if (str == null)
   return "";
  else
   return str.toString();
 }

 /**
  * 取BigDecimal对象的double类型值
  *
  * @param bigdecimalValue
  * @return
  */
 public static double getDoublevalue(BigDecimal bigdecimalValue) {
  if (bigdecimalValue == null)
   return 0;
  else
   return bigdecimalValue.doubleValue();
 }

 /**
  * 不为0或空的字符
  *
  * @param id
  * @return
  */
 public static boolean notZero(String id) {
  if (id == null || id.trim().equals("")) {
   return false;
  } else {
   if (id.equals("0"))
    return false;
   else
    return true;
  }
 }

 public static Integer toInteger(String id) {
  if (id == null || id.trim().equals("")) {
   return new Integer("0");
  } else {
   return new Integer(id);
  }
 }

 public static Integer toInteger2(String id) {
  if (id == null || id.trim().equals("")) {
   return null;
  } else {
   return new Integer(id);
  }
 }

 public static String longtoString(long id) {
  return String.valueOf(id);
 }

 public static Timestamp toTimestamp(String str) {

  Timestamp temp = null;

  // log.error("日期 类型是 " +str);
  if (str == null || str.equals("")) {
   temp = new Timestamp(System.currentTimeMillis());
  } else {
   try {
    if (str.length() > 10) {
     SimpleDateFormat formats = getSimpleDateFormat(
       Locale.CHINESE, 1);
     temp = new Timestamp(
       formats.parse(str.substring(0, 16)).getTime());
    } else {
     SimpleDateFormat formats = getSimpleDateFormat(
       Locale.CHINESE, 0);
     temp = new Timestamp(
       formats.parse(str.substring(0, 10)).getTime());
    }
   } catch (ParseException e) {
    log.error(e);
   }
  }

  return temp;

 }

 /**
  * 由 JS : new Date().getTimezoneOffset() 得到时区时间差值 转成
  *
  * @param timeZone_digital = new Date().getTimezoneOffset()
  * @return
  */
 public static TimeZone getTimeZone(String timeZone_digital) {
  String gmt = "";
  if (timeZone_digital != null) {
   int length = timeZone_digital.length();
   String d = "";
   String f = "";
   if (length == 1) {
    gmt = "GMT";
   } else if (timeZone_digital.startsWith("-")) {
    d = timeZone_digital.substring(0, 1);
    f = timeZone_digital.substring(1, length);
    gmt = "GMT+" + Integer.parseInt(f) / 60;
   } else {
    gmt = "GMT-" + Integer.parseInt(timeZone_digital) / 60;
   }

  } else {
   // 北京时区
   return TimeZone.getTimeZone("GMT+8");
  }

  return TimeZone.getTimeZone(gmt);
 }

 /**
  * HH:mm:ss 24小时制 hh:mm:ss 12小时制 SimpleDateFormat Locale loc int select
  * :日期格式精确度(0/1) 0: yyyy-mm-dd == 2005-02-01 1: yyyy-mm-dd HH:mm:ss ==
  * 2005-02-01 22:22:9
  */
 public static SimpleDateFormat getSimpleDateFormat(Locale loc, int select) {

  Locale default_locale = Locale.SIMPLIFIED_CHINESE;

  if (loc != null) {
   default_locale = loc;
  }

  SimpleDateFormat cnF = null;
  String default_pattern = "yyyy-MM-dd";

  String long_pattern = "yyyy-MM-dd HH:mm";

  if (select == 0) {
   cnF = new SimpleDateFormat(default_pattern, default_locale);
  } else if (select == 1) {
   cnF = new SimpleDateFormat(long_pattern, default_locale);
  } else {
   cnF = new SimpleDateFormat(default_pattern, default_locale);
  }

  return cnF;
 }

 // 国际化 转日期 : 日期 --> 字符
 /**
  * HH:mm:ss 24小时制 hh:mm:ss 12小时制 SimpleDateFormat Locale loc int select
  * :日期格式精确度(0/1) 0: yyyy-mm-dd == 2005-02-01 1: yyyy-mm-dd HH:mm:ss ==
  * 2005-02-01 22:22:9
  */
 public static String I18TimestampToStr(Timestamp times, Locale loc,
   String timeZone_digital, int select) {

  String temps = "";

  if (select == 0) {
   temps = I18TimestampToTimestamp(times, loc, timeZone_digital).toString().substring(
     0, 10);
  } else if (select == 1) {
   temps = I18TimestampToTimestamp(times, loc, timeZone_digital).toString().substring(
     0, 16);
  }

  return temps;

 }

 // yyyyMMdd == 20050201
 public static String formatDateForPayOnline(Timestamp times) {
  Locale default_locale = Locale.SIMPLIFIED_CHINESE;
  String default_pattern = "yyyyMMdd";
  SimpleDateFormat cnF = new SimpleDateFormat(default_pattern,
    default_locale);
  return cnF.format(times).substring(0, 8);
 }

 // 国际化 转日期 : 日期 --> 日期 (数据库数据 转 页面显示数据)
 /**
  * HH:mm:ss 24小时制 hh:mm:ss 12小时制 SimpleDateFormat Locale loc int select
  * :日期格式精确度(0/1) 0: yyyy-mm-dd == 2005-02-01 1: yyyy-mm-dd HH:mm:ss ==
  * 2005-02-01 22:22:9
  */
 public static Timestamp I18TimestampToTimestamp(Timestamp times,
   Locale loc, String timeZone_digital) {

  Timestamp tempDate = null;

  String temp = "";

  TimeZone zone = getTimeZone(timeZone_digital);

  SimpleDateFormat fullDateFormat = null;

  fullDateFormat = getSimpleDateFormat(loc, 1);

  // 以当地 时区转
  fullDateFormat.setTimeZone(zone);

  // log.error(zone.toString()+" :
  // "+fullDateFormat.toLocalizedPattern());
  if (times == null) {
   temp = fullDateFormat.format(new java.util.Date(
     System.currentTimeMillis()));
  } else {
   // System.out.println("input : " + times);
   temp = fullDateFormat.format(times);
   // System.out.println("convert : " + temp);
  }

  // 重新以 服务器时区转
  fullDateFormat.setTimeZone(TimeZone.getDefault());

  try {
   // System.out.println("convert : "+temp+" =
   // "+fullDateFormat.toPattern());
   tempDate = new Timestamp(fullDateFormat.parse(temp).getTime());

  } catch (ParseException e) {
   log.error("timestamp convert error", e);
  }

  return tempDate;
 }

 // 国际化 转日期 : 日期 --> 日期 (数据库数据 转 页面显示数据)
 /**
  * HH:mm:ss 24小时制 hh:mm:ss 12小时制 SimpleDateFormat Locale loc int select
  * :日期格式精确度(0/1) 0: yyyy-mm-dd == 2005-02-01 1: yyyy-mm-dd HH:mm:ss ==
  * 2005-02-01 22:22:9
  */
 public static Timestamp I18TimestampToTimestamp(Timestamp times,
   Locale loc, TimeZone zon) {

  Timestamp tempDate = null;

  String temp = "";

  TimeZone zone = zon;

  SimpleDateFormat fullDateFormat = null;

  fullDateFormat = getSimpleDateFormat(loc, 1);

  // 以当地 时区转
  fullDateFormat.setTimeZone(zone);

  // System.out.println("locale zone: "+TimeZone.getDefault().getID()+"
  // remote: "+zone.getID()+" format:
  // "+fullDateFormat.toLocalizedPattern());

  if (times == null) {
   temp = fullDateFormat.format(new java.util.Date(
     System.currentTimeMillis()));
  } else {
   // System.out.println("input : " + times);
   temp = fullDateFormat.format(times);
   // System.out.println("convert : " + temp);
  }
  // 重新以 服务器时区转
  fullDateFormat.setTimeZone(TimeZone.getDefault());

  try {

   tempDate = new Timestamp(fullDateFormat.parse(temp).getTime());

  } catch (ParseException e) {
   log.error("timestamp convert error", e);
  }

  return tempDate;
 }

 // 转字符 为 日期 (默认用中国大陆日期)
 /**
  * String times :字符表示的日期 int select : HH:mm:ss 24小时制 hh:mm:ss 12小时制
  * SimpleDateFormat Locale loc int select :日期格式精确度(0/1) 0: yyyy-mm-dd ==
  * 2005-02-01 1: yyyy-mm-dd HH:mm:ss == 2005-02-01 22:22:9
  */
 public static Timestamp I18StrToTimestamp(String times, Locale loc,
   String timeZone_digital, int select) {

  Timestamp temp = null;

  java.util.Date dd = null;

  Timestamp defaultDate = new Timestamp(System.currentTimeMillis());

  SimpleDateFormat cnF = null;

  TimeZone zone = getTimeZone(timeZone_digital);

  if (times == null || times.equals("")) {
   return defaultDate;
  } else {
   cnF = getSimpleDateFormat(loc, select);
   cnF.setTimeZone(zone);

   try {
    dd = cnF.parse(times);
   } catch (ParseException e) {
    log.error("timestamp convert error", e);
   }
  }
  // System.out.println(zone.getDisplayName()+" : "+times+" : "+dd);
  // return I18TimestampToTimestamp(new
  // Timestamp(dd.getTime()),Locale.CHINESE,timeZone_digital);
  return new Timestamp(dd.getTime());
 }

 /**
  * 产生随机数
  *
  * @param rands
  * @return
  */
 private static int getRandom(long rands) {
  return new Random(rands).nextInt();
 }

 /**
  * 生成订单号 ex:日期+时间 ex:FXO200512010301
  *
  * @return
  */
 private static final SimpleDateFormat sdf = new SimpleDateFormat(
   "yyyyMMddkkmmss");

 public synchronized static String gernateOrderNumber() {
  StringBuffer orderNo = new StringBuffer("FXO").append(sdf.format(new java.util.Date()));
  return orderNo.toString();
 }

 // 20080129 因为原来有重号 所以用了上面的
 public static String gernateOrderNumber1() {
  StringBuffer num = new StringBuffer();

  num.append("FXO");

  num.append(toDate(null).toString().substring(0, 4));
  num.append(toDate(null).toString().substring(5, 7));
  num.append(toDate(null).toString().substring(8, 10));

  num.append(toTimestamp(null).toString().substring(11, 13));
  num.append(toTimestamp(null).toString().substring(14, 16));

  // long tempN =getRandom(System.currentTimeMillis());
  // num.append((""+tempN).subSequence(1,5));

  // log.error("order: "+num.toString());

  return num.toString();
 }

 /**
  * 生成硬件配置(装箱单)号 ex:日期+时间 ex:FPL200512010301
  *
  * @return
  */
 public static String gernateHardConfNumber() {
  StringBuffer num = new StringBuffer();

  num.append("FPL");
  num.append(toDate(null).toString().substring(0, 4));
  num.append(toDate(null).toString().substring(5, 7));
  num.append(toDate(null).toString().substring(8, 10));

  num.append(toTimestamp(null).toString().substring(11, 13));
  num.append(toTimestamp(null).toString().substring(14, 16));

  // long tempN =getRandom(System.currentTimeMillis());
  // num.append((""+tempN).subSequence(1,5));

  // log.error("hardnu: "+num.toString());

  return num.toString();
 }

 /**
  * 生成 软件配置 号 ex:日期+时间 ex:XSC200512010301
  *
  * @return
  */
 public static String gernateSoftConfNumber() {
  StringBuffer num = new StringBuffer();
  num.append("XSC");
  num.append(toDate(null).toString().substring(0, 4));
  num.append(toDate(null).toString().substring(5, 7));
  num.append(toDate(null).toString().substring(8, 10));

  num.append(toTimestamp(null).toString().substring(11, 13));
  num.append(toTimestamp(null).toString().substring(14, 16));

  // long tempN =getRandom(System.currentTimeMillis());
  // num.append((""+tempN).subSequence(1,5));

  // log.error("softNu; "+num.toString());

  return num.toString();
 }

 /**
  * 货币格式化 处理
  *
  * @param loc
  * @param cur
  * @return
  */
 public static String currencyFormat(Locale loc, double cur) {
  String strcur = null;
  if (loc == null) {
   NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.SIMPLIFIED_CHINESE);
   strcur = nf.format(cur);
  } else {
   if (loc.getLanguage().equals(new Locale("zh", "", "").getLanguage())) {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.SIMPLIFIED_CHINESE);
    strcur = nf.format(cur);
   } else {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
    strcur = nf.format(cur);
   }

  }
  return strcur;
 }

 /**
  * 货币格式化 处理
  *
  * @param curId
  * @param cur
  * @return
  * @author zhangxiwang 2006-07-28
  */
 public static String currencyFormat(long curId, double cur) {
  String strcur = null;
  if (curId == Constants.CUR_ID_RMB) {
   NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.SIMPLIFIED_CHINESE);
   strcur = nf.format(cur);
  } else if (curId == 5) {
   NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.JAPAN);
   strcur = nf.format(cur);
  } else {
   NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
   strcur = nf.format(cur);

  }
  return strcur;
 }

 /**
  * 货币格式化 处理
  *
  * @param loc
  * @param cur
  * @return
  */
 public static String currencyFormat(String curCode, double cur) {
  String strcur = null;
  if (curCode != null) {
   if (curCode.equalsIgnoreCase("RMB")) {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.SIMPLIFIED_CHINESE);
    strcur = nf.format(cur);
   } else if (curCode.equalsIgnoreCase("USD")) {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
    strcur = nf.format(cur);
   } else if (curCode.equalsIgnoreCase("JPY")) {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.JAPAN);
    strcur = nf.format(cur);
   }
  } else {
   NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.SIMPLIFIED_CHINESE);
   strcur = nf.format(cur);
  }
  return strcur;
 }

 public static BigDecimal currencyFormat(int curId) {
  BigDecimal rate = null;
  switch (curId) {
  case 1:
   rate = new BigDecimal("1");
   break;
  case 2:
   rate = SysManageFacade.getSysManageFacade().searchExchangeRate(
     "USD", "RMB");

   break;
  case 5:
   BigDecimal usdTojPYBigDecimal = SysManageFacade.getSysManageFacade().searchExchangeRate(
     "USD", "JPY");
   BigDecimal usdToRmBigDecimal = SysManageFacade.getSysManageFacade().searchExchangeRate(
     "USD", "RMB");
   BigDecimal rmBigDecimal = new BigDecimal("1");

    rate = rmBigDecimal.divide(usdTojPYBigDecimal, 5,
     BigDecimal.ROUND_HALF_UP).multiply(usdToRmBigDecimal).setScale(
     5, BigDecimal.ROUND_HALF_UP);

   break;

  }
  return rate;

 }

 /**
  * 货币格式化 处理
  *
  * @param loc
  * @param cur
  * @return
  */
 public static String currencyFormat(String curCode, BigDecimal cur) {

  if (cur != null) {
   return currencyFormat(curCode, cur.doubleValue());
  } else {
   return currencyFormat(curCode, 0);
  }

 }

 /**
  * 货币格式化 处理
  *
  * @param loc
  * @param cur
  * @return
  */
 public static String currencyFormat(Locale loc, String cur) {

  String strcur = null;
  if (loc == null) {
   loc = Locale.SIMPLIFIED_CHINESE;
   NumberFormat nf = NumberFormat.getCurrencyInstance(loc);
   strcur = nf.format(toBigDecimal(cur).doubleValue());
  } else {
   strcur = currencyFormat(loc, toBigDecimal(cur).doubleValue());
  }
  return strcur;
 }

 /**
  * 重名文件 以系统时间
  *
  * @param pathName
  * @return
  */
 public static String reNameFile(String fileName) {
  String temp = null;
  if (fileName != null) {
   int index = fileName.indexOf(".");
   temp = System.currentTimeMillis() + "."
     + fileName.substring(index + 1, fileName.length());
  }
  return temp;
 }

 /**
  * 删除文件
  *
  * @param pathName
  * @return
  */
 public static boolean rmFile(String pathName) {
  if (IsExit(pathName)) {
   File dr = new File(pathName);
   return dr.delete();
  } else
   return false;
 }

 /**
  * 删除目录 (目录下有文件不删除)
  *
  * @param pathName
  * @return
  */
 public static boolean rmDirectory(String pathName) {
  if (IsExit(pathName)) {
   File dr = new File(pathName);
   if (dr.isDirectory()) {
    if (dr.listFiles() == null || dr.listFiles().length == 0) {
     return dr.delete();
    } else {
     return false;
    }
   } else {
    return dr.delete();
   }
  } else
   return false;
 }

 /**
  * 创建目录
  *
  * @param pathName
  * @return
  */
 public static boolean mkDirectory(String pathName) {
  if (IsExit(pathName)) {
   return false;
  } else {
   File dr = new File(pathName);
   dr.mkdir();
   return true;
  }
 }

 /**
  * 判断文件或目录是否存在
  *
  * @param pathName
  * @return
  */
 public static boolean IsExit(String pathName) {
  File virtualFile = new File(pathName);
  return virtualFile.exists();

 }

 /**
  * 根据操作系统 转换对应路径
  *
  * @param pathName
  * @return
  */
 public static String getFilePathByOperator(String pathName) {

  StringBuffer temp = new StringBuffer();

  // log.info("befor path == "+pathName + " os:
  // "+System.getProperty("os.name"));

  try {
   if (pathName != null) {
    if (SystemUtils.IS_OS_UNIX) {
     String[] s = StringUtils.split(pathName, "\\");

     if (s != null && s.length > 1) {
      for (int i = 0; i < s.length; i++) {
       temp.append("/");
       temp.append(s[i]);
      }

     } else {
      temp.append(pathName);
     }
    } else if (SystemUtils.IS_OS_WINDOWS) {
     String[] s = StringUtils.split(pathName, "/");
     if (s != null && s.length > 1) {
      for (int i = 0; i < s.length; i++) {
       temp.append("/");
       temp.append(s[i]);
      }
     } else {
      temp.append(pathName);
     }

    }
   }
  } catch (Exception e) {
   log.error(e);
  }
  // log.info("afer path == "+temp);

  return temp.toString();

 }

 /**
  * 压缩文件
  *
  * @param files 源文件(全路径文件)
  * @param fileNames (文件名称:用在压缩文件中)
  * @param destFile 目标文件
  * @param comments 压缩文件描述
  * @throws IOException
  */
 public static void zipFiles(String[] files, String[] fileNames,
   String destFile, String comments) throws IOException {

  try {
   FileOutputStream f = new FileOutputStream(destFile);
   // 算法 Adler32 运算速度快,CRC32 数据可信度好
   CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());

   ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
     csum));

   for (int i = 0; i < files.length; i++) {
    if (files[i] != null) {
     if (IsExit(files[i])) {
      FileInputStream in = new FileInputStream(new File(
        files[i]));

      // log.error(fileNames[i]);
      out.putNextEntry(new ZipEntry(fileNames[i]));

      int c;
      while ((c = in.read()) != -1) {
       out.write(c);
       // out.finish();
      }
      in.close();
     } else {
      throw new FileNotFoundException(files[i]);
     }
    }
   }
   // 检验值
   // log.info(String.valueOf(csum.getChecksum().getValue()));
   // 加描述
   out.setComment(comments);
   out.close();

  } catch (ZipException e) {
   log.error(e.getMessage());
   throw new IOException(e.getMessage());
  }

 }

 /**
  * 压缩文件
  * 相对于zipFiles增加输入缓冲流
  * 注释:// 算法 Adler32 运算速度快,CRC32 数据可信度好
  * @param files 源文件(全路径文件)
  * @param fileNames (文件名称:用在压缩文件中)
  * @param destFile 目标文件
  * @param comments 压缩文件描述
  * @throws IOException
  */
 public static void zipFiles2(String[] files, String[] fileNames,
   String destFile, String comments) throws IOException {
  try {
   int bufferSize = 2048;
   FileOutputStream f = null;
   CheckedOutputStream csum = null;
   ZipOutputStream out = null;
   
   try {
    f = new FileOutputStream(destFile);
    csum = new CheckedOutputStream(f, new Adler32());
    out = new ZipOutputStream(new BufferedOutputStream(csum));
    for (int i = 0; i < files.length; i++) {
     if (files[i] != null) {
      if (IsExit(files[i])) {
       FileInputStream in = null;
       BufferedInputStream bis = null;
       try {
        in = new FileInputStream(new File(files[i]));
        bis = new BufferedInputStream(in);
        out.putNextEntry(new ZipEntry(fileNames[i]));
        int count = 0;
        byte[] buffer = new byte[bufferSize];
        while ((count = bis.read(buffer, 0, bufferSize)) != -1) {
         out.write(buffer, 0, count);
        }
        
       }finally
       {
        if (in != null)
        {
         in.close();
        }
        if (bis != null)
        {
         bis.close();
        }
        
        
       }
       
      } else {
       throw new FileNotFoundException(files[i]);
      }
     }
     out.setComment(comments);

    }
   } finally {
    if (out != null) {
     out.close();
    }
   }

  } catch (Exception e) {
   throw new IOException(e);
  }

 }
 
 /**
  * 根据 IP (字符) 计算 数值 IP Number = A x 16777216 + B x 65536 + C x 256 + D
  *
  * @param ip (A.B.C.D)
  * @return
  */
 public static long ipCalculate(String ip) {
  long ipA = 0;
  if (ip != null) {
   StringTokenizer t = new StringTokenizer(ip, ".");
   if (t.hasMoreElements()) {
    ipA += Long.parseLong(t.nextToken()) * 16777216
      + Long.parseLong(t.nextToken()) * 65536
      + Long.parseLong(t.nextToken()) * 256
      + Long.parseLong(t.nextToken());
   }
  }
  // log.info("client IP: "+ip);
  return ipA;
 }

 /**
  * zh_CN 分解成 zh_,CN
  *
  * @param lan (zh_CN,zh_TW)
  * @return
  */
 public static String[] splitLanAndCountry(String lan) {
  String[] temp = new String[2];
  if (lan != null) {
   StringTokenizer t = new StringTokenizer(lan, "_");
   if (t.countTokens() > 1) {
    temp[0] = t.nextToken();
    temp[1] = t.nextToken();
   } else {
    temp[0] = t.nextToken();
    temp[1] = "";
   }
  }
  return temp;
 }

 public static void main(String[] args) {

  /*
   * Locale localeCN = Locale.SIMPLIFIED_CHINESE; Locale localeUSA =
   * Locale.US; TimeZone timeZoneMiami = TimeZone.getTimeZone("GMT-8");
   * Timestamp temp = new Timestamp(System.currentTimeMillis());
   * System.out.println("本地时间: " + temp + " 本地ID " +
   * timeZoneMiami.getID()); System.out.println("美国: " +
   * ValueConvertor.I18TimestampToStr(temp, localeUSA, "240", 1));
   * System.out.println("美国: " + ValueConvertor
   * .I18TimestampToTimestamp(temp, localeUSA, "240"));
   * System.out.println("2005-06-09 字符: " +
   * ValueConvertor.I18StrToTimestamp("2005-6-9", localeUSA, "240", 0));
   * System.out.println("2005-06-09 12:12 字符: " +
   * ValueConvertor.I18StrToTimestamp("2005-6-9 12:12:", localeUSA, "240",
   * 1));
   */

  /*
   * BigDecimal prices = new BigDecimal("0"); BigDecimal prices1 = new
   * BigDecimal(2); System.out.println("total: "+prices.doubleValue());
   * log.info("one is : "+prices1.doubleValue()); for(int i=0;i<10;i++)
   * System.out.println("plus is : "+prices.add(toBigDecimal(""+i)));
   * //System.out.println(toDate(null));
   * ValueConvertor.gernateOrderNumber();
   * ValueConvertor.gernateHardConfNumber();
   * ValueConvertor.gernateSoftConfNumber();
   */
  String[] files = { "D:/updateSofte/DADI_V11_00_CN_00361.ZIP",
    "D:/updateSofte/DADI_V11_00_CN_00368.ZIP" };
  String[] fileNames = { "DADI_V11_00_CN_00361.ZIP",
    "DADI_V11_00_CN_00368.ZIP" };

  String de = "D:/updateSofte/xx我.zip";

  try {
   ValueConvertor.zipFiles(files, fileNames, de, "x431-top");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  Calendar rightNow = Calendar.getInstance(Locale.CHINA);
  rightNow.add(Calendar.MONTH, 1);
  System.out.println("sss " + new Date(rightNow.getTimeInMillis()));

  String aa = "14.01";
  String bb = "19.0028999";
  String cc = "19.01";
  String dd = "19.00";

  BigDecimal copare = new BigDecimal(bb);
  /*
   * if((new BigDecimal(aa)).compareTo(copare)<0){ System.out.println("||
   * "+((new BigDecimal(aa)).compareTo(copare))); System.out.println("||
   * "+((new BigDecimal(cc)).compareTo(copare))); System.out.println("||
   * "+((new BigDecimal(dd)).compareTo(copare))); }
   */
  System.out.println("1 = " + copare + " 2= "
    + copare.setScale(2, BigDecimal.ROUND_HALF_UP));
  String serialNo = "980244601400";
  String version = "10.60";
  String softFlag = "SYSDATA";
  String pdtType = "X431";
  String softType = "4";
  String lanName = "中文简体";
  String carDeptName = "系统数据";
  String root = "D:\\workspace\\x431\\webapp\\download";
  String fileName = "DATA_V10_60_CN.ZIP";
  String sPath = root + "\\X431\\10.60\\DATA_V10_60_CN.ZIP";

  StringBuffer x431_LicenseStr = new StringBuffer(serialNo).append("+").append(
    version).append("+").append(
    ValueConvertor.toChineseString2(softFlag))
  // +X431-X431TOP(X431,X431NANO) 产品系列-产品代号
  .append("+X431-").append(pdtType).append("+").append(softType).append(
    "+").append(lanName).append("+").append(
    ValueConvertor.toChineseString2(carDeptName)).append("+");

  StringBuffer oPath = new StringBuffer();

  oPath.append(root).append(File.separator).append("temp").append(
    File.separator).append(
    StringUtils.substringBeforeLast(fileName, ".")).append("_").append(
    serialNo.substring(5, 10)).append(".").append(
    StringUtils.substringAfterLast(fileName, "."));

  String licens = "980241570900+11.00+DFNISSAN+X431-X431+1+中文简体+东风日产+";
  String op = "D:\\workspace\\x431\\webapp\\download\\temp\\DFNISSAN_V11_00_CN_15709.ZIP";
  String sp = "D:\\workspace\\x431\\webapp\\download\\X431\\11.00\\DFNISSAN_V11_00_CN.ZIP";
  // int value = License.encryptData(oPath.toString(), sPath.toString(),
  // x431_LicenseStr.toString());
  // License.encryptData(op, sp, licens);
  String ids = "1,2,3,";
  String[] d = StringUtils.split(ids, ',');
  for (int i = 0; i < d.length; i++)
   System.out.println(d[i]);
 }

}

分享到:
评论

相关推荐

    西门子数据类型转换_tool_数据类型转换_S7_源码

    "西门子数据类型转换_tool_数据类型转换_S7_源码"这个资源就是一个专门解决这个问题的工具集合。 首先,我们要理解西门子PLC中的主要数据类型。INT是16位整数,用于存储小范围的整数值;DINT是32位整数,可以存储更...

    自己写的转换器,包含各种基本的数据类型。

    在编程时,我们常常需要将一个数据类型转换为另一个数据类型,以满足特定的程序需求。Struts1框架,作为一个经典的MVC(Model-View-Controller)框架,在处理用户输入与模型数据间的转换时,确实存在一定的局限性,...

    易语言源码易语言自定义数据类型与字节集转换源码.rar

    易语言源码易语言自定义数据类型与字节集转换源码.rar 易语言源码易语言自定义数据类型与字节集转换源码.rar 易语言源码易语言自定义数据类型与字节集转换源码.rar 易语言源码易语言自定义数据类型与字节集转换...

    图片类型转换源码

    我们将围绕"图片类型转换源码"这个主题,结合标签中的关键库BMP、jpeglib和opencv,以及提供的文件名tjpg_cpp.v3和cjpg,来讲解相关的技术知识。 首先,BMP(Bitmap)是一种无损的、未经压缩的图像文件格式,它保存...

    易语言自定义数据类型转换1.1源码

    修复8字节数据类型,为数组时的BUG..测试通过,未实际使用到项目中...有问题在帖子里回复...注:自定义数据类型文本 必须跟 当前的数据类型一致,否则崩溃没商量...工作原理是根据 自定义数据类型 文本,来保存,还原...

    VC常用数据类型转换

    包含基本类型-&gt;CString转换,WORD-&gt;DWORD/BYTE,TCHAR-&gt;CSTRING/BSTR, DWORD-&gt;WORD,CSTRING-&gt;基本数据类型/TCHAR/BSTR,COLORREF-&gt;RGB,BYTE-&gt;KB/MB/GB,BSTR-&gt; TCHAR/CSTRING等多种数据类型转换源码!

    易语言自定义数据类型与字节集转换源码

    在"SanYe"这个标签下,我们可以推测这是一个由易语言爱好者或开发者分享的资源,可能是为了帮助其他易语言学习者理解和实现自定义数据类型与字节集之间的转换。"content.txt"文件可能包含了具体的源码示例,供读者...

    struts2数据类型转换器

    这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...

    易语言启动线程传自定义数据类型参数源码

    请注意,易语言可能需要将自定义数据类型转换为可以被线程接受的通用格式,如字符串或内存块。 5. 线程同步与通信:如果需要线程间交换数据,需使用如“等待”、“唤醒”等同步命令,确保数据操作的正确性。 资源...

    winform 类型转换源码

    在Windows Forms(WinForm)开发中,类型转换是常见的编程操作,它涉及到将一个数据类型转换为另一种数据类型。在C#中,类型转换是非常重要的,因为它允许不同类型的变量之间进行交互。本资源包含的“winform 类型...

    利用kettle的api运用Java代码完成数据转换到excel和数据库源码

    在数据转换过程中,需要注意的一点是数据类型的转换。Kettle 提供了多种数据类型的转换函数,例如 stringToDate、dateToString 等。可以根据需要选择合适的转换函数来完成数据类型的转换。 此外,Kettle 的 API 还...

    Java数据类型操作包含转换代码实例.rar

    通过这些实例,初学者可以更直观地理解Java中数据类型转换的规则和潜在问题。在学习过程中,务必注意检查转换后的数据是否符合预期,并理解不同类型之间的精度差异。 总之,Java数据类型的转换是编程基础中的重要一...

    JS 数据类型转换

    JavaScript是一种动态类型的编程语言,它的数据类型转换是其核心特性之一。在JS中,有七种内置的数据类型:Undefined、Null、Boolean、Number、BigInt、String和Symbol(ES6新增)。此外,还有一种特殊的类型——...

    vc各种数据类型相互转换源码

    vc各种数据类型相互转换 包括基本数据类型与CString类型的相互转换 TCHAR和CString的相互转换 TCHAR与BSTR的相互转换 BSTR与CString的相互转换 DWORD与WORD的相互转换 WORD与BYTE的相互转换 COLORREF与RGB分量的相互...

    json一键转换为易语言自定义数据类型1

    【标题】:将 JSON 转换为易语言自定义数据类型的实现方法 【描述】:本文档将详细介绍如何将 JSON 数据转换成易语言的自定义数据类型,并提供了一个示例软件供参考。通过这个方法,可以自动化地将 JSON 对象映射到...

    Java常用的强转类型,基本数据类型转换,JSONObject强转Map,JSONArray强转List(附源码)

    一、基本数据类型转换 1. 自动类型转换:当我们将一个范围小的数据类型赋值给范围大的数据类型时,系统会自动进行转换,如int转long,byte转int等。 ```java int num = 10; long longNum = num; // 自动类型转换 `...

    易语言自定义数据类型与字节集转换

    3. 底层操作:在处理硬件接口或者操作系统API时,可能需要将自定义数据类型转换为字节集进行低级别的操作。 "自定义写出内存"是指将自定义数据类型的数据写入内存,这可能是为了临时存储、处理或传递这些数据。而...

    易语言DLL返回自定义数据类型源码

    总结起来,易语言DLL返回自定义数据类型涉及到的关键知识点包括自定义数据类型定义、DLL函数接口设计、数据类型转换、调用约定、DLL导入与调用、内存管理和错误处理。通过理解和掌握这些概念,开发者可以在易语言...

    基于Java实现的简易Excel(xls)与List数据类型转换设计源码

    该项目为基于Java语言的简易Excel(xls)与List数据类型转换设计源码,包含24个文件,涵盖15个Java源文件、4个XML配置文件、2个xls文件、1个Git忽略文件、1个LICENSE文件、1个markdown文件。此设计旨在实现Excel数据与...

Global site tag (gtag.js) - Google Analytics