📄 tools.java
字号:
* @param off
* @param length
* @return
*/
public static final byte[] truncate(byte[] buffer, int off, int length)
{
int nSize = 0;
if( buffer.length < length + off )
{
nSize = buffer.length - off;
}
else
{
nSize = length;
}
byte[] buf = new byte[nSize];
for(int i = 0; i < nSize; i++ )
{
buf[i] = buffer[off+i];
}
return buf;
}
public static final String getIP(int ip)
{
return getIP(Tools.intToBytes(ip, 4));
}
public static final String getIP(byte[] buf)
{
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < buf.length; i++ )
{
buffer.append(buf[i]<0?(0x0100+buf[i]):buf[i]);
if( i+1 < buf.length )
buffer.append(".");
}
return buffer.toString();
}
/**
* 得到持续时间,如果
* @param duration
* @return d天 HH:mm:ss
*/
public static final String getDuration(long duration)
{
duration = System.currentTimeMillis() - duration;
if( duration > 0 )
{
return (duration/MILLI_OF_DAY)+"天 "+getSmartTime((int)(duration%MILLI_OF_DAY)/1000);
}
return "0天00:00:00";
}
public static final String getDuration(int duration)
{
duration = current() - duration;
if( duration > 0 )
{
return (duration/SECOND_OF_DAY)+"天 "+getSmartTime(duration%SECOND_OF_DAY);
}
return "0天00:00:00";
}
public static final int current()
{
return (int)(System.currentTimeMillis()/1000);
}
public static final String toUnicode(byte[] buf)
{
int i = buf.length / 2;
char[] cs = new char[i];
int j;
for (j = 0; j < i; j++) {
cs[j] = (char) (buf[ 2*j+1 ] & 0xff);
cs[j] <<= 8;
cs[j] += (char) (buf[ 2*j ] & 0xff);
}
return new String(cs);
/* try
{
return new String(buf, "Unicode");
}
catch(Exception e)
{
return "";
}*/
}
public static final byte[] toUnicode(String source)
{
byte[] des = null;
int bytesCount = source.length() * 2;
if (bytesCount >= 1) {
des = new byte[bytesCount];
char charTemp;
for (int index = 0; index < source.length(); index++) {
charTemp = source.charAt(index);
des[index * 2 + 1] = (byte) (charTemp >>> 8 & 0xff);
des[index * 2] = (byte) (charTemp & 0xff);
}
}
else
des = new byte[0];
return (des);
/* try
{
return str.getBytes("Unicode");
}
catch(Exception e)
{
return new byte[0];
}*/
}
public static final void printb(byte[] buffer)
{
printb(buffer, 0, buffer.length);
}
public static final void printb(byte[] buffer, int offset, int length)
{
StringBuffer sb = new StringBuffer();
for (int i = offset; i < buffer.length && i < length; i++)
{
//System.out.println("if( i + 1("+(i+1)+") == buffer.length("+buffer.length+") ) ");
sb.append("0x");
int k = buffer[i] < 0 ? 256 + buffer[i] : buffer[i];
if( k < 0x10 ) sb.append('0');
sb.append(Integer.toHexString(k));
sb.append(" ");
if( i%8 == 7 ) sb.append(" ");
if( i%16 == 15 ) sb.append('\n');
if( i + 1 == buffer.length )
{
if( i%16 != 0 ) sb.append('\n');
System.out.println(sb.toString());
return;
}
}
System.out.println(sb.toString());
}
public static final String getUnicode(byte[] buffer)
{
StringBuffer buf = new StringBuffer();
for(int i = 0; i < buffer.length; i++ )
{
if( i%2 == 0 )
buf.append("\\u");
buf.append(Integer.toHexString(buffer[i]<0?0x0100+buffer[i]:buffer[i]));
}
return buf.toString();
}
/**
* 得到生日
* @param age
* @return
*/
public static final int getBirthday(int age)
{
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR)-age;
now.set(year, 0, 1);
return (int)(now.getTimeInMillis()/1000);
}
public static final int getAge(int birthday)
{
return getAge(((long)birthday)*1000);
}
public static final int getAge(long birthday)
{
java.util.Calendar now = java.util.Calendar.getInstance();
int year = now.get(Calendar.YEAR);
now.setTimeInMillis(birthday);
return year - now.get(Calendar.YEAR);
}
public static final String getBytesString(byte[] buffer)
{
StringBuffer sb = new StringBuffer();
for(int i = 0;i < buffer.length; i++ )
{
sb.append(Integer.toHexString(buffer[i]<0?0x0100+buffer[i]:buffer[i]));
sb.append(" ");
}
return sb.toString();
}
public static java.text.DecimalFormat DFORMAT = new java.text.DecimalFormat("0.00 KB");
public static java.text.DecimalFormat DF = new java.text.DecimalFormat("0.00");
public static final String getDecimalStr(int d)
{
double d1 = d;
return DF.format(d1/100);
}
public static final String getKBStr(long size)
{
double d = size;
return DFORMAT.format(d/1024);
}
public static String trim(String content)
{
StringBuffer newContent = new StringBuffer(content.trim());
int i = 0;
for( ; i< newContent.length(); i++ )
{
if( newContent.charAt(i) != ' ' &&
newContent.charAt(i) != ' ')
{
break;
}
}
return newContent.substring(i);
}
public static String getUniqueValue()
{
StringBuffer stringbuffer = new StringBuffer();
int code = stringbuffer.hashCode()>>8;
stringbuffer.append(Integer.toHexString(code)).
append(Long.toHexString(System.currentTimeMillis()>>16));
return stringbuffer.toString();
}
public static final String checkHttpUri(String url, String prefix)
{
//System.out.print(url);
String u = url;
if( u == null ) return null;
u = u.trim();
if( u.length() == 0 ) return null;
//u = u.toLowerCase();
int k = 0, j = 0;
if( u.length() > k && u.charAt(k) == 'h' ) k+=1;
if( u.length() > k && u.charAt(k) == 't' ) k+=1;
if( u.length() > k && u.charAt(k) == 't' ) k+=1;
if( u.length() > k && u.charAt(k) == 'p' ) k+=1;
if( u.length() > k && u.charAt(k) == ':' ){
k += 1;
j += 1;
}
if( u.length() > k && u.charAt(k) == '/' ){
k += 1;
j += 1;
}
if( u.length() > k && u.charAt(k) == '/' ){
k += 1;
j += 1;
}
//System.out.println(j+","+k);
if( j>= 2 && k < 4 ) k = 0;
if( j < 2 && k < 5 ) k = 0;
if( j == 0 ) k = 0;
if( k >= u.length() ) return null;
if( j >= u.length() ) return null;
//System.out.println(j+","+k);
if( u.charAt(k) == '/' ) k += 1;
if( k != 7 ) u = prefix + u.substring(k);
int i = u.lastIndexOf("/");
//System.out.println(i+" , "+u.substring(0, i));
if( i == u.length() - 1) u = u.substring(0, i);
//System.out.println(u);
return u;
}
public static final String decodeUnicode(String src, char sper)
{
StringBuffer sb = new StringBuffer();
int i = 0;
while( i < src.length() )
{
char c = src.charAt(i++);
//System.out.println(c);
if( c == sper )
{
String s = src.substring(i, i+2);
//System.out.println(s);
c = (char)Tools.getH2D(s);
i += 2;
}
sb.append(c);
}
return sb.toString();
}
public static final String checkHttpUri(String url)
{
String u = url;
if( u == null ) return null;
u = u.trim();
if( u.length() == 0 ) return null;
//u = u.toLowerCase();
int k = 0, j = 0;
if( u.length() > k && u.charAt(k) == 'h' ) k+=1;
if( u.length() > k && u.charAt(k) == 't' ) k+=1;
if( u.length() > k && u.charAt(k) == 't' ) k+=1;
if( u.length() > k && u.charAt(k) == 'p' ) k+=1;
if( u.length() > k && u.charAt(k) == ':' ){
k += 1;
j += 1;
}
if( u.length() > k && u.charAt(k) == '/' ){
k += 1;
j += 1;
}
if( u.length() > k && u.charAt(k) == '/' ){
k += 1;
j += 1;
}
//System.out.println(j+","+k);
if( j>= 2 && k < 4 ) k = 0;
if( j < 2 && k < 5 ) k = 0;
if( j == 0 ) k = 0;
if( k >= u.length() ) return null;
if( j >= u.length() ) return null;
//System.out.println(j+","+k);
if( u.charAt(k) == '/' ) k += 1;
u = "http://"+u.substring(k);
//System.out.println(u);
int i = u.lastIndexOf("/");
//System.out.println(i+" , "+u.substring(0, i));
if( i == u.length() - 1) u = u.substring(0, i);
return u;
}
/**
* 从文件中获取消息内容
* @param fileName
* @return
* @throws IOException
*/
public static final byte[] readFromFile(File file) throws IOException
{
FileInputStream fin = new FileInputStream(file);
byte [] buf = new byte[fin.available()];
fin.read(buf);
fin.close();
return buf;
}
//判断是否合法的地址
public static boolean isIPAddress(String strNum)
{
boolean b = true;
PatternCompiler compiler = new Perl5Compiler();
try
{
Pattern pattern = compiler.compile(
"(\\d{1,3})(\\.)(\\d{1,3})(\\.)(\\d{1,3})(\\.)(\\d{1,3})");
PatternMatcher matcher = new Perl5Matcher();
b = matcher.matches(strNum, pattern);
strNum = strNum.replace('.', ':');
String[] fromStrs = strNum.split(":");
//逐个检查每位是否小于255。
for (int i = 0; i < fromStrs.length; i++)
{
if (Integer.valueOf(fromStrs[i]).intValue() > 255)
{
b = false;
}
}
}
catch (Exception e)
{
}
return b;
}
/**
* 返回输入的路径文件是否存在
* @param path
* @return
*/
public static final boolean isValidFile(String path)
{
File file = new File(path);
if(file.exists())
{
return true;
}
return false;
}
/**
*
* @param folder
* @return
*/
public static final boolean createFolder(String folder)
{
File fd = new File(folder);
if( fd.exists() && fd.isDirectory())
{
return true;
}
return fd.mkdir();
}
public static final boolean deleteAll(File dir)
{
File files[] = dir.listFiles();
for( int i = 0; i < files.length; i++ )
{
if( !files[i].delete() ) return false;
}
return dir.delete();
}
private final static String[] hexDigits = {
"0", "1", "2", "3", "4", "5", "6", "7",
"8", "9", "a", "b", "c", "d", "e", "f"};
/**
* 转换字节数组为16进制字串
* @param b 字节数组
* @return 16进制字串
*/
public static String byteArrayToString(byte[] b)
{
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
{
resultSb.append(byteToHexString(b[i]));//若使用本函数转换则可得到加密结果的16进制表示,即数字字母混合的形式
//resultSb.append(byteToNumString(b[i]));//使用本函数则返回加密结果的10进制数字字串,即全数字形式
}
return resultSb.toString();
}
private static String byteToNumString(byte b)
{
int _b = b;
if (_b < 0) {
_b = 256 + _b;
}
return String.valueOf(_b);
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String encodeMD5(String origin)
{
String resultString = null;
try
{
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byteArrayToString(md.digest(resultString.getBytes()));
}
catch (Exception ex)
{
}
return resultString;
}
public static void main( String[] args )
{
/*try{
System.out.println( new String( "钀ㄨ开鍏".getBytes(), "UTF-8" ) );
}catch( Exception e){
e.printStackTrace();
}
String subject = "AB刘学好";
String s;
try{
byte buf[] = subject.getBytes("UTF-8");
Tools.printb(buf);
s = new String( buf );
}
catch(Exception e){
s = subject;
}
System.out.println(s);*/
String s = "/portal/wap/menu.do;jid=GnRXFs1b5l!-2036470113?menuid=200104&ts=4021";
System.out.println(checkHttpUri(s, "http://wap.monternet.com/"));
System.out.println(encodeMD5("/portal/wap/menu.do;jid=GnRXFs1b5l!-2036470113?menuid=200104&ts=4021"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -