`
dyccsxg
  • 浏览: 201715 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类

Java常用功能代码

    博客分类:
  • Java
阅读更多

1. 屏幕截图

public static void main(String[] args)throws Exception {
	String filename = "d:\\Temp\\screen.png";
	// 获取屏幕尺寸
	Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
	Rectangle rectangle = new Rectangle(dimension);
	// 创建图像
	BufferedImage image = new Robot().createScreenCapture(rectangle);
	// 保存到磁盘 
	// @see ImageIO#getWriterFormatNames();
	ImageIO.write(image, "png", new File(filename));
}

2. 缩放图像

package org.demo.common;

import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * 创建缩略图
 * @author  
 * @date    2010-6-19
 * @file    org.demo.common.ImageThumbnail.java
 */
public class ImageThumbnail {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		String inFilename = "d:\\Temp\\demo1.png";
		String outFilename = "d:\\Temp\\demo2.png";
		createThumbnail(inFilename, outFilename, 800, 600, 0.75f);
	}
	/**
	 * 创建缩略图
	 * @param inFilename
	 * @param outFilename	 
	 * @param thumbWidth
	 * @param thumbHeight
	 * @param quality
	 *        [0.0,1.0]
	 * @return
	 */
	public static void createThumbnail(
			String inFilename,String outFilename,
			int thumbWidth,int thumbHeight,float quality)
			throws IOException,InterruptedException{
		// 加载图像
		Image image = Toolkit.getDefaultToolkit().getImage(inFilename);
		// 创建图像追踪器
		MediaTracker mediaTracker = new MediaTracker(new Container());
		mediaTracker.addImage(image, 0);
		/** !必须等图像完全加载到内存之后才能执行后续操作! */
		mediaTracker.waitForID(0);
		System.out.println("isErrorAny=" + mediaTracker.isErrorAny());
		// 计算等比例缩放的实际 宽高值
		double thumbRatio = thumbWidth/thumbHeight;
		int imageWidth = image.getWidth(null);
		int imageHeight = image.getHeight(null);
		double imageRatio = (double)imageWidth/imageHeight;
		if (thumbRatio < imageRatio){
			// --> height
			thumbHeight = (int)(thumbWidth/imageRatio);
		} else {
			// --> width
			thumbWidth = (int)(thumbHeight * imageRatio);
		}
		// 创建内存缩略图
		BufferedImage bufferedImage = new BufferedImage(thumbWidth, 
														thumbHeight, 
														BufferedImage.TYPE_INT_RGB);
		Graphics2D g2d = bufferedImage.createGraphics();
		g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
							 RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		g2d.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
		// 将内存缩略图 写入 文件
		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufferedImage);
		param.setQuality(quality,false);
		encoder.setJPEGEncodeParam(param);
		encoder.encode(bufferedImage);
		out.close();
	}
}

3. 设置 http 代理

package org.demo.common;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 设置 http 代理
 * @author  
 * @date    2010-6-19
 * @file    org.demo.common.HttpProxy.java
 */
public class HttpProxy {
	public static void main(String[] args)throws Exception {
		// 设置 http 代理
		setHttpProxy("206.224.254.10", "80", "", "");
		// 访问一个网页
		URL url = new URL("http://www.7daili.com/");
		URLConnection conn = url.openConnection();
		InputStream in = conn.getInputStream();
		InputStreamReader reader = new InputStreamReader(in,"utf-8");
		BufferedReader bf = new BufferedReader(reader);
		StringBuilder sb = new StringBuilder(1024);
		String line = null;
		while((line = bf.readLine()) != null){
			sb.append(line).append('\n');
		}
		bf.close();
		// 取出当前的客户端ip ip格式:[您的IP:12.34.56.78(地理位置)]
		String regex = "(您的IP\\:.*\\))\\s";
		Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(sb);
		if (matcher.find()){
			System.out.println("--> " + matcher.group(1));
		} else {
			System.out.println("--> " + "未找到ip");
		}	
	}
	/**
	 * 设置 http 代理
	 * @param host
	 * @param port
	 * @param user
	 * @param pass
	 */
	public static void setHttpProxy(String host,String port,
									String user,String pass){
		System.getProperties().setProperty("http.proxyHost", host);
		System.getProperties().setProperty("http.proxyPort", port);
		System.getProperties().setProperty("http.proxyUser", user);
		System.getProperties().setProperty("http.proxyPassword", pass);
	}
}

4. 解析 XML 文件

package org.demo.common;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * 解析 XML 文件
 * @author  
 * @date    2010-6-21
 * @file    org.demo.common.XmlTools.java
 */
public class XmlTools {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		byte[] bytes = getXml().getBytes();
		ByteArrayInputStream in = new ByteArrayInputStream(bytes);
		// --
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		Document document = db.parse(in);
		Element root = document.getDocumentElement();
		// -- 获得所有的 student 元素
		List<Element> students = getChildren(root, "student");
		for(int i=0; i < students.size(); i++){
			Element student = students.get(i);
			String id = student.getAttribute("id");
			// -- 获得 student 元素的所有子元素
			NodeList nodeList = student.getChildNodes();
			System.out.print("[id:" + id );
			for(int j=0; j < nodeList.getLength(); j++){
				Node node = nodeList.item(j);
				if(node.getNodeType() == Node.ELEMENT_NODE){
					System.out.print("," + node.getNodeName() + ":" + node.getTextContent());
				}
			}
			System.out.println("]");		
		}
		in.close();
	}
	/**
	 * 获取子元素
	 * @param parent
	 * @param name
	 * @return
	 */
	public static List<Element> getChildren(Element parent,String name){
		List<Element> list = new ArrayList<Element>();
		Node node = parent.getFirstChild();
		while(node != null){
			if(node instanceof Element){
				if(name.equals(((Element)node).getTagName())){
					list.add((Element)node);
				}
			}
			node = node.getNextSibling();
		}
		return list;
	}
	/**
	 * 创建一个 XML 格式的 String
	 * @return
	 */
	public static String getXml(){
		// --
		StringBuilder sb = new StringBuilder();
		sb.append("<?xml version='1.0' encoding='utf-8'?>");
		sb.append("<root>");
		sb.append("  <student id='01'>");
		sb.append("    <name>Zhangs</name>");
		sb.append("    <grade>A</grade>");
		sb.append("    <age>20</age>");
		sb.append("  </student>");
		sb.append("  <student id='02'>");
		sb.append("    <name>Lis</name>");
		sb.append("    <grade>B</grade>");
		sb.append("    <age>18</age>");
		sb.append("  </student>");
		sb.append("</root>");
		return sb.toString();
	}
}

5. 创建 zip 文件

package org.demo.common;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.CRC32;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 创建 zip 文档
 * @author  
 * @date    2010-6-20
 * @file    org.demo.common.ZipTools.java
 */
public class ZipTools {
	public static void main(String[] args)throws Exception {
		// --
		String base = "D:/workspace/eclipse_wk/myProject/src/src-java/org/";
		String[] files = {"demo"};
		createZipFile(base, "tmp.zip", files);
	}
	/**
     * 创建一个压缩文件
     * @param base
     *        The root path end with '/'
     * @param zipName
     * @param files
     *        The files in base directory.
     * @return 该压缩文件的绝对路径
     */
    public static String createZipFile(String base,String zipName,String[] files){
        zipName = base + zipName;
        ZipOutputStream zipout = null;
        try{
            zipout = new ZipOutputStream(new FileOutputStream(zipName));
            // 去除重复的 file 
            Set<String> set = new HashSet<String>();
            for(String fname : files){
                set.add(fname);
            }
            for(String fname : set){            	
                zip(zipout,new File(base + fname),"");
            }
        } catch(Exception e){
            e.printStackTrace();
        } finally{
            try{
                if(zipout != null){
                    zipout.flush();
                    zipout.close();
                }               
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return zipName;
    }
    /**
     * 将文件 file 写入到 zip 输出流中
     * @param out
     * @param file
     * @param base
     */
    private static void zip(ZipOutputStream out,File file,String base) throws IOException{
    	if (base == null){
    		base = "";
    	}
    	base += file.getName();
        if(file.isDirectory()){
        	base += '/';
            ZipEntry entry = new ZipEntry(base);     // 创建一个目录条目 [以 / 结尾]
            out.putNextEntry(entry);                 // 向输出流中写入下一个目录条目
            File[] fileArr = file.listFiles();       // 递归写入目录下的所有文件
            for(File f : fileArr){
                zip(out,f,base);
            }
        } else if (file.isFile()){        	
            ZipEntry entry = new ZipEntry(base);     // 创建一个文件条目
            entry.setCrc(getCRC32(file));
            entry.setMethod(ZipEntry.STORED);
            entry.setCompressedSize(file.length());
            // --
            out.putNextEntry(entry);                 // 向输出流中写入下一个文件条目
            FileInputStream in = new FileInputStream(file); // 写入文件内容
            byte[] buf = new byte[1024];
    		int count;
            while((count = in.read(buf)) != -1){
                out.write(buf,0,count);
            }
            in.close();
        }
    }
    /**
     * 计算 file 的 CRC-32 校验和
     * @param file
     * @return
     */
    public static long getCRC32(File file)throws IOException{
    	// --
    	CRC32 crc = new CRC32();
    	// --
    	BufferedInputStream bins = new BufferedInputStream(new FileInputStream(file));			
    	byte[] buf = new byte[1024];
		int count;
		// --
		while((count = bins.read(buf)) != -1){
			crc.update(buf, 0, count);
		}
		bins.close();
		return crc.getValue();
    }
}

6. 调整数组大小

package org.demo.common;

import java.lang.reflect.Array;

/**
 * 调整数组大小
 * @author  
 * @date    2010-6-21
 * @file    org.demo.common.ArrayTools.java
 */
public class ArrayTools {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] arr = new int[10];
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		arr[4] = 5;
		arr[5] = 6;
		arr[6] = 7;
		// 调整数组大小
		int[] tmp = (int[])arrayResize(arr, 7);
		// 输出新数组信息
		System.out.println("length=" + tmp.length);
		System.out.print("[");
		for(int i=0; i < tmp.length; i++){
			System.out.print(tmp[i]);
			if(i < tmp.length -1){
				System.out.print(",");
			}
		}
		System.out.println("]");
	}
	/**
	 * 调整数组的大小
	 * @param oldArray
	 * @param newSize
	 */
	public static Object arrayResize(Object oldArray,int newSize){
		// -- 数组大小
		int oldSize = Array.getLength(oldArray);
		newSize = Math.min(oldSize, newSize);
		// -- 数组内 元素的类型
		Class<?> type = oldArray.getClass().getComponentType();		
		// -- 新建数组
		Object newArray = Array.newInstance(type, newSize);
		System.arraycopy(oldArray, 0, newArray, 0, newSize);
		return newArray;
	}
}

7. 数组 -> Map

package org.demo.common;

import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
// --
// library dependencies
//  * commons-lang-2.5.jar
// --
/**
 * Array to Map
 * @author  
 * @date    2010-6-20
 * @file    org.demo.common.Array2Map.java
 */
public class Array2Map {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		String[][] arr = new String[][]{{"a","aa"},{"b","bb"}};
		Map map = ArrayUtils.toMap(arr);
		System.out.println("map=" + map);
	}
}

 

8. 使用 XSLT 转换 XML

package local;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.xml.sax.InputSource;

/**
 * 使用 XSLT 转换 XML
 * @author  
 * @date    2010-7-8
 * @file    local.XsltTools.java
 */
public class XsltTools {
	
	/**
	 * 测试
	 * @param args
	 * @throws IOException 
	 * @throws TransformerException 
	 */
	public static void main(String[] args) throws Exception {		
		String xsl = "D:/local/transform.xsl";
		String xml = "D:/local/customer.xml";
		InputStream in = new FileInputStream(xsl);
		// 构建输入输出流
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		Source from = new StreamSource(new File(xml));
		Result to = new StreamResult(out);
		// 构建转换器并执行转换
		Transformer transformer = getTransformer(in);
		transformer.transform(from, to);
		// 输出转换后结果
		String result = out.toString();
		System.out.println(result);
	}
	/**
	 * 创建并返回 transformer
	 * @param in_xsl
	 * @return a Transformer instance or null.
	 */
	public static Transformer getTransformer(InputStream in_xsl){
		Transformer transformer = null;
		try {
			SAXSource xsl = new SAXSource(new InputSource(in_xsl));
			transformer = TransformerFactory.newInstance()
			                                .newTransformer(xsl);					
		} catch (Exception e) {
			e.printStackTrace();
		}
		return transformer;
	}	
} 

// customer.xml

<?xml version="1.0" encoding="utf-8"?>
<mysql>
    <customer>
        <key>001</key>
        <firstName>Zhang</firstName>
        <lastName>san</lastName>
        <comment>This is a comment</comment>
    </customer>
</mysql>

 // transform.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/mysql">
<db2>
  <xsl:for-each select="customer">    
    <client id="{key}">           
        <name><xsl:value-of select="concat(firstName,lastName)"/></name>        
        <note><xsl:value-of select="comment"/></note>
    </client>
  </xsl:for-each>    
</db2>
</xsl:template>
</xsl:stylesheet>

// 输出结果

xslt 转换结果

 

9. 类型转换

/**
 * 类型转换: String -> type
 * @param <T>
 * @param value
 * @param type
 * @return
 */
@SuppressWarnings("unchecked")
public <T>T typeConvert(String value,Class<T> type){
	PropertyEditor pe = PropertyEditorManager.findEditor(type);
	pe.setAsText(value);
	return (T)pe.getValue();
}

  

10. java 计算日期差

	/**
	 * 计算日期差
	 * @param start
	 * @param end
	 * @return
	 */
	public static long subtract(Date start,Date end){
		// 先个自计算出距离 1970-1-1 的日期差,然后相减
		long one_day = 24*60*60*1000;
		long stime = start.getTime();
		long etime = end.getTime();
		long sdays = stime/one_day;
		long edays = etime/one_day;
		// 若 start < 1970-1-1,则日期差了一天,需要修正
		if (stime < 0){
			sdays--;
		}
		// 若 end < 1970-1-1,则日期差了一天,需要修正
		if (etime < 0){
			edays--;
		}
		return edays - sdays;
	}

  

11. END

分享到:
评论

相关推荐

    20个开发人员非常有用的Java功能代码(推荐)

    20个开发人员非常有用的Java功能代码

    Java常用代码

    各种Java功能代码,Java访问XML文件,Java数据库访问技术,Java对工作方式日期的处理

    20个开发人员非常有用的Java功能代码(整理版)

    20个开发人员非常有用的Java功能代码(整理版)

    100多个非常有用的java功能代码

    100多个非常有用的java功能代码,非常实用!

    Java实现六种常用排序(含源代码)

    Java实现六种常用排序 并用多线程进行速度比较(其实意义不大) 含有代码

    分享28个Java常用类库代码集.rar

    比如加密解密类、文件帮助类、ftp二进制与ascii传输方式区别、文件上传类、MD5加密类、文件滤镜类、数据库连接类和操作类、StringHelper字符串处理类、功能计数类等,一共有近30个代码文件,一个Java文件对应一个...

    JAVA 正则表达式4种常用的功能.txt

    JAVA 正则表达式4种常用的功能.txt JAVA 正则表达式4种常用的功能.txt JAVA 正则表达式4种常用的功能.txt

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    Java开发工具代码库

    Java开发人员必不可少的代码仓库,包含各种常用的功能,可以大大提高开发效率。

    java常用API举例

    一个详细的java常用API举例。。有代码和说明。希望可以帮助到你。

    java源码包2

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    20个开发人员非常有用的Java功能代码

    20个开发人员非常有用的Java功能代码

    java源码包---java 源码 大量 实例

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    Java开发技术大全(500个源代码).

    hasRecall.java 可以完成回调功能的类 HasStatic.java 一个简单的拥有静态成员的类 hideMember_1.java 成员隐藏示例1 hideMember_2.java 成员隐藏示例2 hideMember_3.java 成员隐藏示例3 hideMember_4.java ...

    java开发常用jar包

    Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。 commons-...

    java常用语句大全JAVA程式-自动贩卖机SWIJava程序设计报告TCH&CASE

    java常用语句大全JAVA程式-Java程序设计报告自动贩卖机SWITCH&CASE

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    Java EE常用框架.xmind

    Java EE常用框架 WebService 介绍 基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用 术语 XML. Extensible Markup Language -扩展性标记语言 WSDL – ...

    java开发在工作中代码搜集

    该资料为chm电子书,为开发工作中遇到的工具类、功能代码、技术文档、语法类文档等 现已搜集接近一百个工具类、十多种功能代码、各种第三方类库搜集、springBoot使用文档、四种语法类文档、五个数据对照表、各种设计...

Global site tag (gtag.js) - Google Analytics