java API 小应用

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);

 3.遍历文件夹及文件

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());
     }     
    }
 }
}

 4.修改文件名

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来比较才能确保得到我们想要的结果。

 

你可能感兴趣的:(java)