Java之Util工具类

import java.io.*;
import java.lang.management.ManagementFactory;
import java.math.BigInteger;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.sql.*;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;

public class Util {
	private static final Logger log = Logger.getLogger(Util.class.getSimpleName());
	private static final long FILE_COPY_BUFFER_SIZE = 1024 * 1024 * 3;
	private static final String WORDS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	private static final SecureRandom RANDOM = new SecureRandom();
	private static final String UA_Iphone = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25";
	private static final String UA_Firefox = "Firefox/18.0";
	private static final String UA_Chrome = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/51.0.2704.79 Chrome/51.0.2704.79 Safari/537.36";

	private static String P_Email = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

	public static boolean isNull(String val) {
		return val == null || "".equals(val.trim());
	}

	/**
	 * @TODO 0?
	 * @param val
	 * @return
	 */
	public static Integer getInteger(String val) {
		return isNull(val) ? 0 : Integer.valueOf(val.trim());
	}

	public static Long getLong(String val) {
		return isNull(val) ? 0 : Long.valueOf(val.trim());
	}

	public static Integer getInt(String val) {
		return isNull(val) ? 0 : Integer.parseInt(val.trim());
	}

	public static Double getDouble(String val) {
		return isNull(val) ? 0.0d : Double.valueOf(val.trim());
	}

	public static java.sql.Date getSQLDate(String val) {
		return isNull(val) ? null : java.sql.Date.valueOf(val.trim());
	}

	// is Number
	public static boolean isNumber(String inputData) {
		NumberFormat formatter = NumberFormat.getInstance();
		ParsePosition pos = new ParsePosition(0);
		formatter.parse(inputData, pos);
		return inputData.length() == pos.getIndex();
	}

	public static boolean isInteger(String s) {
		Scanner sc = new Scanner(s);
		return sc.hasNextInt();
	}

	public static boolean isNumeric(String str) {
		if (str == null)
			return false;
		for (char c : str.toCharArray()) {
			if (!Character.isDigit(c))
				return false;
		}
		return true;
	}

	/**
	 * data time 
* yyyy-MM-dd HH:mm:ss
*/ public static String now() { String fmt = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat df = new SimpleDateFormat(fmt); return (df.format(new Date())); } /** yyyy-MM-dd HH:mm:ss */ public static String getNowTime() { return getNowTime("yyyy-MM-dd HH:mm:ss"); } /** yyyyMMddHHmmss */ public static Long getNowTimeNumber() { return new Long(getNowTime("yyyyMMddHHmmss")); } /** yyyyMMddHHmmss */ public static String getNowTimeLong() { return getNowTime("yyyyMMddHHmmss"); } /** yyyyMMddHHmmss */ public static String getNowTimeFile() { return getNowTime("yyyyMMddHHmmss"); } public static String getNowTime(String fmt) { SimpleDateFormat sf = new SimpleDateFormat(fmt); String dt = sf.format(new Date()); return dt; } /** yyyyMMddHHmmss */ public static Long roll2Date(long epoch, long roll2) { return roll2Date(epoch, roll2, "yyyyMMddHHmmss"); } public static Long roll2Date(long epoch, long roll2, String fmt) { SimpleDateFormat sf = new SimpleDateFormat(fmt); String dt = sf.format(new Date(epoch + roll2)); return new Long(dt); } /** milliseconds "yyyyMMddHHmmss" */ public static Long epoch2dateLong(long epoch) { return new Long(epoch2date(epoch, "yyyyMMddHHmmss")); } /** milliseconds "yyyy-MM-dd HH:mm:ss" */ public static String epoch2date(long epoch) { return epoch2date(epoch, "yyyy-MM-dd HH:mm:ss"); } /** yyyy-MM-dd HH:mm:ss */ public static String epoch2date(long epoch, String fmt) { SimpleDateFormat sf = new SimpleDateFormat(fmt); String dt = sf.format(new Date(epoch)); return dt; } public static long getEpoch() { return new Date().getTime() / 1000; } /** 20160719181054 -> 2016-07-19 18:10:54 */ public static String showTime(long time) { String l = String.valueOf(time); return l.substring(0, 4) + "-" + l.substring(4, 6) + "-" + l.substring(6, 8) + " " // + l.substring(8, 10) + ":" + l.substring(10, 12) + ":" + l.substring(12, 14); } public static String showTimeMinute(long time) { return showTime(time).substring(0, 16); } // ip country public static long ip2num(String start_ip) { String[] octets_start = start_ip.split("\\."); long _start = 0; for (String octet_s : octets_start) { int octet_i = Integer.parseInt(octet_s); _start <<= 8; _start |= octet_i; } return _start; } public static String num2ip(long ip_number) { String[] octets = new String[4]; for (int i = 3; i >= 0; i--) { octets[i] = String.valueOf(ip_number & 0xFF); ip_number >>= 8; } return join(Arrays.asList(octets), "."); } // binary search public static int firstLeft(Long[] array, long k, int start, int end) { if (start > end) { return -1; } int c = 0; while (start < end) { int mid = start + (end - start) / 2; if (array[mid] == k) { return mid; } else if (array[mid] > k) { end = mid - 1; } else { // [mid] < k start = mid + 1; } // System.out.println("firstLeft(): " + c++ + " " + start); } if (array[start] > k) { return start - 1; } else { return start; } } /* string */ public static boolean valid(String obj) { return obj != null && !"".equals(obj); } public static boolean validEmail(String e) { if (e == null) return false; Pattern regex = Pattern.compile(P_Email); Matcher matcher = regex.matcher(e); return matcher.matches(); } public static String slurp(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) { out.append(new String(b, 0, n)); } return out.toString(); } public static List split(String line, int len) { List l = new ArrayList(); for (int i = 0; i < line.length(); i += len) { l.add(line.substring(i, i + len)); } // return l.toArray(new String[l.size()]); return l; } /** SPACE -> "" */ public static String[] split(String line, String delimiter) { List nodeValues = new ArrayList(); int offset = 0; int pos = line.indexOf(delimiter, offset); while (pos != -1) { nodeValues.add(offset == pos ? "" : line.substring(offset, pos)); offset = pos + delimiter.length(); pos = line.indexOf(delimiter, offset); } if (offset <= line.length()) { nodeValues.add(offset == line.length() ? "" : line.substring(offset)); } return nodeValues.toArray(new String[nodeValues.size()]); } public static String join(Collection ls, String delimiter) { String dl = delimiter == null ? "" : delimiter; StringBuilder builder = new StringBuilder(); for (Object o : ls) { builder.append(o).append(dl); } return builder.substring(0, builder.length() - dl.length()); } public static String join(Object[] ls, String delimiter) { String dl = delimiter == null ? "" : delimiter; StringBuilder builder = new StringBuilder(); for (Object o : ls) { builder.append(o).append(dl); } return builder.substring(0, builder.length() - dl.length()); } public static String join(long[] ls, String delimiter) { String dl = delimiter == null ? "" : delimiter; StringBuilder builder = new StringBuilder(); for (long o : ls) { builder.append(o).append(dl); } return builder.substring(0, builder.length() - dl.length()); } public static String resetParameter(String url, String param, String value) { String rrl = eraseParameter(url, param); if (rrl.indexOf('?') != -1) { return rrl += "&" + param + "=" + value; } return rrl += "?" + param + "=" + value; } public static String eraseParameter(String url, String param) { int si = url.indexOf(param + "="); if (si != -1) { int ei = url.indexOf('&', si); if (url.charAt(si - 1) == '&') { // no start si -= 1; } else if (url.charAt(si - 1) == '?') { // first ei += 1; } return url.substring(0, si) + (ei < 1 ? "" : url.substring(ei)); } return url; } public static String getParameter(String url, String param) { int si = url.indexOf(param + "="); if (si != -1) { int ei = url.indexOf('&', si); if (ei == -1) { // end of url ei = url.length(); } return url.substring(si + param.length() + 1, ei); } return ""; } /** 100000 -> 123456 */ public static int randomNumber(int base) { int r = RANDOM.nextInt(base * 10); return r < base ? base + r : r; } public static String random() { return random(32); } public static String random(int len) { StringBuilder sb = new StringBuilder(len); int size = WORDS.length(); for (int i = 0; i < len; i++) sb.append(WORDS.charAt(RANDOM.nextInt(size))); return sb.toString(); } public static String zeroPrefix(int val, int len) { return zeroPrefix(String.valueOf(val), len); } public static String zeroPrefix(String val, int len) { return ("00000000000000000000".substring(0, len) + val).substring(val.length()); } // crc32 public static long getCRC32(List ls) { String[] a = new String[ls.size()]; return getCRC32(ls.toArray(a)); } public static long getCRC32(String str) { return str.hashCode(); } public static long getCRC32(String[] strs) { long crc = 0; for (String str : strs) { if (str == null) continue; crc ^= str.hashCode(); } return crc; } /* file and stream */ public static String getMD5(byte[] bs) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(bs); byte[] md5sum = digest.digest(); String md5 = ""; for (int i = md5sum.length - 1; i >= 0; i--) { String hex = Integer.toHexString(md5sum[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } md5 = hex + md5; } return md5; } catch (Exception e) { e.printStackTrace(); } return null; } public static String getMD5(String s) { return s == null ? null : getMD5(s.getBytes()); } public static String getMD5(File f) throws Exception { InputStream is = new FileInputStream(f); byte[] buffer = new byte[8192]; int read = 0; MessageDigest digest = MessageDigest.getInstance("MD5"); while ((read = is.read(buffer)) > 0) { digest.update(buffer, 0, read); } is.close(); byte[] md5sum = digest.digest(); String md5 = ""; for (int i = md5sum.length - 1; i >= 0; i--) { String hex = Integer.toHexString(md5sum[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } md5 = hex + md5; } return md5; } public static byte[] hex2byte(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16)); } return data; } public static Map readConfig(String conf) { Map map = Collections.synchronizedMap(new HashMap()); try { // reload conf file Properties config = new Properties(); InputStream ins = new Util().getClass().getResourceAsStream(conf); config.load(ins); for (Iterator it = config.keySet().iterator(); it.hasNext();) { String nam = (String) it.next(); String val = new String(config.getProperty(nam).getBytes("ISO8859-1"), "UTF-8"); map.put(nam, val.trim()); } } catch (IOException e) { e.printStackTrace(); } return map; } public static byte[] utf2gbk(byte[] bs) { return byteConvert(bs, "UTF-8", "GBK"); } public static byte[] byte2UTF8(byte[] bs, String orgcs) { return byteConvert(bs, orgcs, "UTF-8"); } public static byte[] byteConvert(byte[] bs, String orgcs, String dstcs) { try { Charset org = Charset.forName(orgcs); Charset dst = Charset.forName(dstcs); ByteBuffer inb = ByteBuffer.wrap(bs); CharBuffer data = org.decode(inb); ByteBuffer outputBuffer = dst.encode(data); byte[] oub = outputBuffer.array(); return oub; } catch (Exception e) { e.printStackTrace(); } return null; } public static void checkNnewDir(String fn) { try { File f = new File(fn); File d = f.getParentFile(); if (!d.exists()) { d.mkdirs(); } } catch (Exception e) { e.printStackTrace(); } } public static String getLine(String ctn, int seq) { int si = 0; int ni = -1; do { si = ni + 1; ni = ctn.indexOf('\n', Math.max(0, si)); // System.out.println(seq + " " + si + " " + ni); } while (--seq > 0 && ni != -1); ni = ni == -1 && si < ctn.length() ? ctn.length() : ni; return ni != -1 ? ctn.substring(si, ni) : null; } public static String getNextLine(String ctn, int offset) { int ei = ctn.indexOf('\n', offset); return ei != -1 && ei > offset ? ctn.substring(offset, ei) : null; } public static byte[] streamReader(InputStream ins) throws IOException { return streamReader(ins, 0, -1); } public static byte[] streamReader(InputStream ins, long skip, long size) throws IOException { BufferedInputStream bis = new BufferedInputStream(ins); bis.skip(skip); // 0 or + boolean hasSize = size != -1; // -1 full long readed = 0; ByteArrayOutputStream ba = new ByteArrayOutputStream(); long bsize = hasSize ? Math.min(1024, size) : 1024; byte[] b = new byte[(int) bsize]; int len = 0; while ((len = bis.read(b)) != -1) { ba.write(b, 0, len); if (hasSize) { readed += len; if (size - readed < 1024) { b = new byte[(int) (size - readed)]; } if (readed == size) { break; } } } return ba.toByteArray(); } public static byte[] stream2array(InputStream ins) { return stream2array(ins, 20480); } public static byte[] stream2array(InputStream ins, int bsize) { ByteArrayOutputStream out = new ByteArrayOutputStream(bsize); try { byte[] buf = new byte[bsize]; int len; while ((len = ins.read(buf)) > 0) { out.write(buf, 0, len); } ins.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } return out.toByteArray(); } // file to byte[] public static byte[] getBytesFromFile(File file) { try { InputStream is = new FileInputStream(file); // Get the size of the file long length = file.length(); // You cannot create an array using a long type. // It needs to be an int type. // Before converting to an int type, check // to ensure that file is not larger than Integer.MAX_VALUE. if (length > Integer.MAX_VALUE) { // File is too large } // Create the byte array to hold the data byte[] bytes = new byte[(int) length]; // Read in the bytes int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) { offset += numRead; } // Ensure all the bytes have been read in if (offset < bytes.length) { throw new IOException("Could not completely read file " + file.getName()); } // Close the input stream and return bytes is.close(); return bytes; } catch (IOException ioe) { ioe.printStackTrace(); } return null; } public static byte[] getBytesFromUrl(String url) throws IOException { return getBytesFromUrl(url, 0); } public static byte[] getBytesFromUrl(String url, int size) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(1024 * 20); BufferedInputStream in = new BufferedInputStream(new URL(url).openStream()); byte[] b = new byte[1024]; int sz = 0; int siz_ = 0; while ((sz = in.read(b)) != -1) { out.write(b, 0, sz); siz_ += sz; if (size > 0 && siz_ >= size) { break; } } in.close(); return out.toByteArray(); } public static byte[] getBytesOfUrl(String u) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(1024 * 20); URL url = new URL(u); HttpURLConnection con = (HttpURLConnection) url.openConnection(); HttpURLConnection.setFollowRedirects(true); con.setConnectTimeout(1000 * 5); con.setRequestProperty("User-Agent", UA_Chrome); con.setRequestMethod("GET"); // Map> responseMap = con.getHeaderFields(); // for (Iterator iterator = responseMap.keySet().iterator(); iterator.hasNext();) { // String key = (String) iterator.next(); // List values = responseMap.get(key); // for (int i = 0; i < values.size(); i++) { // Object o = values.get(i); // System.out.println(key + ": " + o); // } // } InputStream is = con.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); byte[] buf = new byte[1024]; int len = -1; while ((len = bis.read(buf)) != -1) { out.write(buf, 0, len); } bis.close(); return out.toByteArray(); } public static byte[] deGZip(byte[] gz) throws IOException { return deGZip(gz, 1024 * 1024 * 1); } public static byte[] deGZip(byte[] gz, int bsize) throws IOException { GZIPInputStream gs = new GZIPInputStream(new ByteArrayInputStream(gz)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; byte[] buf = new byte[bsize]; while ((len = gs.read(buf)) != -1) { baos.write(buf, 0, len); } return baos.toByteArray(); } /* exception */ public static byte[] getExceptionTrace(Exception e) { ByteArrayOutputStream ba = new ByteArrayOutputStream(); PrintStream w = new PrintStream(ba); e.printStackTrace(w); w.flush(); return ba.toByteArray(); } /* sql */ public static String getCountSql(String sql) { StringBuilder sb = new StringBuilder(); int fi = sql.indexOf(" from "); sb.append("select count(1)"); sb.append(sql.substring(fi)); return sb.toString(); } public static String getPagingSqlMySQL(String sql, int start, int stop) { return sql + " limit " + (start >= 1 ? start - 1 : start) + ", " + (stop > start ? (stop - start) + 1 : 1); } public static String getPagingSql(String sql, int start, int stop) { StringBuilder sb = new StringBuilder(); int wi = sql.lastIndexOf(" where "); boolean hw = (wi != -1 && sql.substring(wi).indexOf(')') == -1); String wr = hw ? " and" : " where"; sb.append("select * from (select rownum as num, "); sb.append(sql.substring(7)); sb.append(wr); sb.append(" rownum <= "); sb.append(stop); sb.append(") t where t.num >= "); sb.append(start); return sb.toString(); } /** seq_acct_id -> ACCT */ public static String getSequencePref(String seq) { int si = seq.indexOf('_') + 1; int ei = seq.indexOf('_', si); return seq.substring(si, ei).toUpperCase(); } public static void closeConnection(Connection conn) { try { if (conn != null) { // log.info("auto commit(" + conn.getAutoCommit() + ")"); if (!conn.getAutoCommit()) { conn.setAutoCommit(true); } conn.close(); } conn = null; } catch (SQLException se) { se.printStackTrace(); } } public static void rollbackConnection(Connection conn) { try { if (conn != null) { log.info("rollbackConnection(" + conn.getAutoCommit() + ")"); conn.rollback(); } } catch (SQLException se) { se.printStackTrace(); } } public static void closeStatement(Statement stmt) { try { if (stmt != null) { stmt.close(); } } catch (SQLException se) { se.printStackTrace(); } } public static void closeResultSet(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException se) { se.printStackTrace(); } } public static void closeRS(ResultSet rs, Statement stmt) { closeResultSet(rs); closeStatement(stmt); } public static void closeRSC(ResultSet rs, Statement stmt, Connection conn) { closeResultSet(rs); closeStatement(stmt); closeConnection(conn); } public static void ShowResultSetMeta(ResultSetMetaData md) { try { int cc = md.getColumnCount(); for (int i = 1; i <= cc; i++) { String name = md.getColumnName(i); String type = md.getColumnTypeName(i); log.info("ShowResultSetMeta(): " + name + ", " + type); } } catch (SQLException se) { se.printStackTrace(); } } public static boolean validConnection(Connection conn) { boolean valid = false; try { valid = conn != null && !conn.isClosed() && conn.isValid(3); } catch (SQLException se) { valid = false; } finally { if (!valid) { closeConnection(conn); } } return valid; } public static void printSQLException(SQLException ex) { for (Throwable e : ex) { if (e instanceof SQLException) { e.printStackTrace(System.err); System.err.println("SQLState: " + ((SQLException) e).getSQLState()); System.err.println("Error Code: " + ((SQLException) e).getErrorCode()); System.err.println("Message: " + e.getMessage()); Throwable t = ex.getCause(); while (t != null) { System.out.println("Cause: " + t); t = t.getCause(); } } } } /** http */ public static String httpPost(String url, String data) { return httpPost(url, data, 0); } public static String httpPost(String url, String data, int timeout) { String charset = "UTF-8"; OutputStream output = null; try { HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setDoOutput(true); // Triggers POST. conn.setDoInput(true); conn.setRequestMethod("POST"); // POST method conn.setRequestProperty("Accept-Charset", charset); conn.setRequestProperty("Connection", "keep-alive"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset); conn.setUseCaches(false); conn.setConnectTimeout(timeout == 0 ? 5000 : timeout); output = conn.getOutputStream(); output.write(data.getBytes()); int status = conn.getResponseCode(); InputStream response = conn.getInputStream(); String rs = new String(Util.streamReader(response)); return rs != null ? rs.trim() : null; } catch (IOException ie) { ie.printStackTrace(); return "-1"; } finally { if (output != null) try { output.close(); } catch (IOException logOrIgnore) { } } } /** security */ public static final String encrypt(String data, BigInteger confuse) { if (data == null || data.length() == 0) return null; BigInteger bi_passwd = new BigInteger(data.getBytes()); BigInteger bi_r1 = confuse.xor(bi_passwd); return bi_r1.toString(Character.MAX_RADIX); } public static final String decrypt(String encrypted, BigInteger confuse) { if (encrypted == null || encrypted.length() == 0) return null; try { BigInteger bi_r1 = new BigInteger(encrypted, Character.MAX_RADIX); BigInteger bi_r0 = bi_r1.xor(confuse); return new String(bi_r0.toByteArray()); } catch (Exception e) { return null; } } public static final String rot13(String s) { StringBuilder b = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 'a' && c <= 'm') c += 13; else if (c >= 'A' && c <= 'M') c += 13; else if (c >= 'n' && c <= 'z') c -= 13; else if (c >= 'N' && c <= 'Z') c -= 13; b.append(c); } return b.toString(); } public static int byte2int(byte[] b) { if (b.length == 4) return b[0] << 24 | (b[1] & 0xff) << 16 | (b[2] & 0xff) << 8 | (b[3] & 0xff); if (b.length == 3) return 0x00 << 24 | (b[0] & 0xff) << 16 | (b[1] & 0xff) << 8 | (b[2] & 0xff); else if (b.length == 2) return 0x00 << 24 | 0x00 << 16 | (b[0] & 0xff) << 8 | (b[1] & 0xff); else if (b.length == 2) return 0x00 << 24 | 0x00 << 16 | 0x00 << 8 | (b[0] & 0xff); return 0; } public static byte[] int2byte(int value) { byte[] array = new byte[4]; int offset = 0; array[offset] = (byte) (0xff & (value >> 24)); array[offset + 1] = (byte) (0xff & (value >> 16)); array[offset + 2] = (byte) (0xff & (value >> 8)); array[offset + 3] = (byte) (0xff & value); return array; } public static boolean fileTouch(String f) { File file = new File(f); try { file.createNewFile(); if (file.exists()) { return file.setLastModified(System.currentTimeMillis()); } } catch (IOException e) { e.printStackTrace(); return false; } return false; } public static boolean fileDelete(String f) { File file = new File(f); try { return file.delete(); } catch (Exception ignored) { return false; } } public static boolean fileCopy(String f_src, String f_dest) throws IOException { File srcFile = new File(f_src); File destFile = new File(f_dest); FileInputStream fis = null; FileOutputStream fos = null; FileChannel input = null; FileChannel output = null; try { fis = new FileInputStream(srcFile); fos = new FileOutputStream(destFile); input = fis.getChannel(); output = fos.getChannel(); long size = input.size(); long pos = 0; long count = 0; while (pos < size) { count = size - pos > FILE_COPY_BUFFER_SIZE ? FILE_COPY_BUFFER_SIZE : size - pos; pos += output.transferFrom(input, pos, count); } } finally { output.close(); fos.close(); input.close(); fis.close(); } if (srcFile.length() != destFile.length()) { return false; } return true; } public static void fileSave(String f, byte[] ctn) { OutputStream out; try { out = new FileOutputStream(f); out.write(ctn); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } public static String getJavaPID() { String pid = ManagementFactory.getRuntimeMXBean().getName(); int ati = pid.indexOf('@'); if (ati != -1) pid = pid.substring(0, ati); return pid; } public static long getIntegerOfArray(byte[] array, int offset) { return ((0xff & array[offset + 0]) << 0) | ((0xff & array[offset + 1]) << 8) | ((0xff & array[offset + 2]) << 16) | ((0xff & array[offset + 3]) << 24); } // Note: Value needs to be long to avoid sign extension public static void setIntegerToArray(byte[] array, int offset, long value) { array[offset + 0] = (byte) ((value >> 0) & 0xff); array[offset + 1] = (byte) ((value >> 8) & 0xff); array[offset + 2] = (byte) ((value >> 16) & 0xff); array[offset + 3] = (byte) ((value >> 24) & 0xff); } public static byte[] mergeArray(byte[] a1, byte[] a2) { byte[] a = new byte[a1.length + a2.length]; System.arraycopy(a1, 0, a, 0, a1.length); System.arraycopy(a2, 0, a, a1.length, a2.length); return a; } public static int[] mergeArray(int[] a1, int[] a2) { int[] a = new int[a1.length + a2.length]; System.arraycopy(a1, 0, a, 0, a1.length); System.arraycopy(a2, 0, a, a1.length, a2.length); return a; } /** * String t = "asd asdf fa ab|\"ce asdf\"|eifw234 \"asdf adsf sadf\"";
*/ public static String[] getTerms(String t) { if (t == null) return null; t = t.trim().replaceAll("\\s+", " "); List ts = new ArrayList(); int t0 = 0; boolean g0 = false; boolean g1 = false; for (int i = 0; i < t.length(); i++) { if (t.charAt(i) == ' ' && (!g0 || (g0 && g1))) { ts.add(t.substring(t0, i).replaceAll("\"", "")); t0 = i + 1; if (g0 && g1) { g0 = false; g1 = false; } } if (t.charAt(i) == '"') { if (g0) g1 = true; else g0 = true; if (g0 && g1 && t.length() > i + 1 && t.charAt(i + 1) == '|') { g0 = false; g1 = false; } } } ts.add(t.substring(t0).replaceAll("\"", "")); String[] terms = new String[ts.size()]; ts.toArray(terms); return terms; } }

记录一个util工具类,类中有一些生成随机数,以及根据url获取请求的设备类型等方法。

你可能感兴趣的:(java,开发语言)