1.当前时间加一天:
Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(5, 1); Date newdate = calendar.getTime(); System.out.println(date); System.out.println(newdate);
2.邮箱隐藏成**
//format email eg:ddd****@test.com String email = [email protected]; String formatEamil = email; int indexLen = email.indexOf("@"); formatEamil = email.substring(0,3) + "******" + email.substring(indexLen);
import java.io.File; import java.util.ArrayList; public class FileTest { private static ArrayList<String> filelist = new ArrayList<String>(); public static void main(String[] args) throws Exception { String filePath = "E://Struts2"; getFiles(filePath); } /* * 通过递归得到某一路径下所有的目录及其文件 */ static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){ /* * 递归调用 */ getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath()); System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath()); }else{ System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath()); } } } }
File oldFile = new File("a.txt"); String rootPath = oldFile.getParent(); System.out.println("根路径是:"+rootPath); File newFile = new File(rootPath + File.separator + "b.txt"); System.out.println("修改后文件名称是:"+newFile.getName()); oldFile.renameTo(newFile)
5.综合运用
package boots; import java.io.File; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; public class RealnameTest { private static ArrayList<String> filelist = new ArrayList<String>(); public static void main(String[] args) throws IOException { String filePath = "E://OutputFile"; getFiles(filePath); } /* * 通过递归得到某一路径下所有的目录及其文件 */ static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){ /* * 递归调用 */ getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath()); // String name = file.getName(); // int leng = name.length(); // // System.out.println(name.substring(leng-15, leng-7)); System.out.println("***"+file.getName()); String name = file.getName(); //String dateString = "2012-12-06 "; //file.renameTo() try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(name); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(5, -1); Date newdate = calendar.getTime(); String sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(newdate); File newFile = new File(filePath + File.separator + sdate); System.out.println(newFile.getAbsolutePath()); file.renameTo(newFile); } catch (ParseException e) { System.out.println(e.getMessage()); } //System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath()); }else{ // System.out.println(file.getName()); String name = file.getName(); int leng = name.length(); String rname = name.substring(leng-15, leng-7); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date date = sdf.parse(rname); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(5, -1); Date newdate = calendar.getTime(); rname = (new SimpleDateFormat("yyyyMMdd")).format(newdate); } catch (ParseException e) { System.out.println(e.getMessage()); } String n = name.substring(0, leng-14)+rname+"_wx.csv"; File newFile = new File(filePath + File.separator + n); //System.out.println(newFile.getAbsolutePath()); file.renameTo(newFile); System.out.println(n); //System.out.println("TTTTTT**"+file.getName()); //System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath()); } } } }
6.String与date的互转
- String--》Date
-
String dateString = "2012-12-06 "; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); Date date = sdf.parse(dateString); } catch (ParseException e) { System.out.println(e.getMessage()); }
-
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.StringUtils; /** * 日期Util类 * * @author calvin */ public class DateUtil { private static String defaultDatePattern = "yyyy-MM-dd "; /** * 获得默认的 date pattern */ public static String getDatePattern() { return defaultDatePattern; } /** * 返回预设Format的当前日期字符串 */ public static String getToday() { Date today = new Date(); return format(today); } /** * 使用预设Format格式化Date成字符串 */ public static String format(Date date) { return date == null ? " " : format(date, getDatePattern()); } /** * 使用参数Format格式化Date成字符串 */ public static String format(Date date, String pattern) { return date == null ? " " : new SimpleDateFormat(pattern).format(date); } /** * 使用预设格式将字符串转为Date */ public static Date parse(String strDate) throws ParseException { return StringUtils.isBlank(strDate) ? null : parse(strDate, getDatePattern()); } /** * 使用参数Format将字符串转为Date */ public static Date parse(String strDate, String pattern) throws ParseException { return StringUtils.isBlank(strDate) ? null : new SimpleDateFormat( pattern).parse(strDate); } /** * 在日期上增加数个整月 */ public static Date addMonth(Date date, int n) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, n); return cal.getTime(); } public static String getLastDayOfMonth(String year, String month) { Calendar cal = Calendar.getInstance(); // 年 cal.set(Calendar.YEAR, Integer.parseInt(year)); // 月,因为Calendar里的月是从0开始,所以要-1 // cal.set(Calendar.MONTH, Integer.parseInt(month) - 1); // 日,设为一号 cal.set(Calendar.DATE, 1); // 月份加一,得到下个月的一号 cal.add(Calendar.MONTH, 1); // 下一个月减一为本月最后一天 cal.add(Calendar.DATE, -1); return String.valueOf(cal.get(Calendar.DAY_OF_MONTH));// 获得月末是几号 } public static Date getDate(String year, String month, String day) throws ParseException { String result = year + "- " + (month.length() == 1 ? ("0 " + month) : month) + "- " + (day.length() == 1 ? ("0 " + day) : day); return parse(result); } }
- Date--》String
-
String sdate; Date ddate; sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(ddate);
6.【Double】【BigDecimal】转换
double d = 12.22; BigDecimal bg = new BigDecimal(d);//【double】-->【BigDecimal】 double as = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//【BigDecimal】-->【double】
7.产生1-100的整数
Random rand = new Random(); int x = rand.nextInt(100)+1; int nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值 int y = (int)(Math.random()*100)+1; static double random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
8.Unicode编码转化为汉字
/** * @Title: unicodeToChinese * @Description: Unicode编码转化为汉字 * @param @param result * @param @return 设定文件 * @return StringBuffer 返回类型 * @throws */ public static String unicodeToChinese(StringBuffer result) { StringBuffer sb = new StringBuffer(); Pattern p = Pattern.compile("(?i)\\\\u([\\da-f]{4})"); Matcher m = p.matcher(result); while(m.find()) { m.appendReplacement(sb, Character.toString((char)Integer.parseInt(m.group(1), 16))); } m.appendTail(sb); return sb.toString(); }
9.通过IP获取地址
/** * @Title: getAddressByIP * @Description: 通过IP获取地址 * @param @param strIP ip * @param @return 设定文件 * @return IpAdressDto ip所在地bean * @throws */ public static IpAdressDto getAddressByIP(String strIP) { try { //String strIP = "0.0.0.0"; //调用baiduAPI通过IP获取IP所在地址 URL url = new URL( "http://apistore.baidu.com/microservice/iplookup?ip=" + strIP); URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line = null; StringBuffer result = new StringBuffer(); while((line = reader.readLine()) != null) { result.append(line); } reader.close(); //从百度中得到的地址对应的中文是unicode码,所以需要转化下 //String s = "\\u4e2d\\u56fd"; String sb = unicodeToChinese(result); IpAdressDto ipAdressDto = getBeanFromJSON(sb,IpAdressDto.class,"retData"); return ipAdressDto; } catch( IOException e) { logger.error("从IP中读取地址失败:"+e.getMessage()); return null; } }
对应的实体类IpAdressDto
public class IpAdressDto { private String ip; private String country; private String area; private String province; private String city; private String district; private String carrier; //get set方法 public String toString(){ return "*ip:"+ip+" *country:"+country+" *area:"+area+" *province:"+province+ " *city:"+city+" *district:"+district+" *carrier:"+carrier; } }
取IP
public static String getIpAddress() { Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { InetAddress ip = ips.nextElement(); if (!ip.isLoopbackAddress()) { System.out.println("ip-------------------->" + ip.getHostAddress()); return ip.getHostAddress(); } } } } catch (Exception e) { e.printStackTrace(); } return ""; }
String ip = request.getHeader("X-FORWARDED-FOR"); if (ip == null) { ip = request.getRemoteAddr(); }
10.JAVA中Long与Integer比较容易犯的错误
因为Long与Ineger都是包装类型,是对象。 而不是普通类型long与int , 所以它们在比较时必须都应该用equals,或者先使用longValue()或intValue()方法来得到他们的基本类型的值然后使用==比较也是可以的。
但是有一种特殊情况, 其实Long与Integer都将 -128~127 这些对象缓存了。 可以看看Long类型源码里面有一个LongCache类,代码如下:
private static class LongCache { private LongCache(){} static final Long cache[] = new Long[-(-128) + 127 + 1]; static { for(int i = 0; i < cache.length; i++) cache[i] = new Long(i - 128); } }
调用了Long的一个类方法Long.valueOf(Long) , 所以可以得到的结论是Long a = 5L实际上等于 Long a = Long.valueOf(5) ;
然后再看看Long.valueOf()方法是如何定义的:
public static Long valueOf(long l) { final int offset = 128; if (l >= -128 && l <= 127) { // will cache return LongCache.cache[(int)l + offset]; } return new Long(l); }
一目了然,会先判断基本类型的值如果在-128~127之间,就会直接从LongCache里面取出缓存的对象返回,否则就new一个新的Long对象返回 。
Long重写了equals方法:
public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }
它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。
所以对于Integer与Long的比较,最好是使用equals来比较才能确保得到我们想要的结果。