`
dyccsxg
  • 浏览: 204760 次
  • 性别: 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

分享到:
评论

相关推荐

    Java常用源程序代码

    在“Java常用源程序代码”这个压缩包中,我们能够找到一系列与Java编程相关的源代码文件,这些文件被精心组织在不同的文件夹中,每个文件夹都代表着一个特定的主题或功能领域。通过深入研究这些代码,我们可以学习到...

    java常用开发代码4,Spring

    本集合主要关注的是Java和Spring框架在实际开发中的常见应用和技巧。 1. **Spring框架概述**:Spring是一个开源的Java平台,它提供了全面的编程和配置模型,用于构建现代Java应用。Spring的核心特性包括依赖注入...

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

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

    java常用代码

    本压缩包“java常用代码”集合了一系列基础到进阶的Java代码示例,涵盖了多个关键领域,有助于初学者快速掌握Java编程的核心概念。 1. **遗产算法**:在Java中,继承是面向对象特性之一,它允许一个类(子类)继承...

    Java常用代码

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

    Java常用代码整理

    在"Java常用代码整理"这个主题中,我们可以探讨多个Java编程中的关键知识点,包括基础语法、面向对象特性、异常处理、集合框架、IO流、多线程、网络编程以及实用工具类等。 1. **基础语法**:Java的基础语法包括...

    Java基本常用代码示例

    这个名为“Java基本常用代码示例”的资源集包含了Java程序设计中的一些基础和常见代码片段,对于初学者或需要复习基本概念的开发者来说非常有用。下面我们将深入探讨这些标签所涵盖的Java基本知识点。 1. **数据...

    java常用开发代码2面试

    6. **异常处理**:Java中的异常是程序运行时的错误,使用try-catch-finally语句块捕获和处理异常,可以提高程序的健壮性。 7. **集合框架**:Java集合框架包括List(ArrayList、LinkedList)、Set(HashSet、...

    java 常用实验代码

    在“java常用实验代码”这个文档中,我们可以看到一系列与Java编程相关的实践项目,旨在帮助学习者深入理解Java的核心概念和技术。以下是这些实验代码所涵盖的知识点的详细解释: 1. **接口定义及实现**: Java...

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

    "100多个非常有用的Java功能代码"集合就是这样一个资源库,它包含了大量经过验证、优化的代码示例,可以帮助程序员快速解决实际问题。这个压缩包可能包含了从基础操作到高级特性的广泛代码示例,对于学习和提升Java...

    四种常用的java代码扫描工具介绍

    本文主要介绍了四种常用的 Java 代码扫描工具,并对它们的功能、特性等方面进行了分析和比较。这些工具分别是 Checkstyle、FindBugs、PMD 和 Jtest。静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的...

    Java中常用的代码汇总-WPS Office.docx

    "Java 中常用的代码汇总" Java 是一种广泛应用的编程语言,随着项目的开发和维护,积累了大量实用的代码。下面是 20 个常用的 Java 代码,都是别人项目中使用过的代码,为开发者提供了有价值的参考。 字符串与整型...

    Java中常用的代码汇总-WPS Office.pdf

    Java 中常用的代码汇总 本文总结了 20 个常用的 Java 代码,涵盖了字符串处理、文件操作、日期处理、数据库操作等多个方面。这些代码都是在实际项目中使用过的,具有很高的实用价值。 字符串处理 1. 字符串和整型...

    一个java常用类库的源代码

    在Java中,类库是预编译的代码集合,包含了各种功能模块,可以帮助开发者快速构建应用程序,提高开发效率。本资源包含了一个常用的Java类库的源代码,这对于Java程序员来说是一份宝贵的学习和参考材料。 首先,Java...

    java工程常用代码工具类

    在这个"java工程常用代码工具类"中,我们可以找到几个关键功能的实现,包括Jedis、FTP上传、JSON格式化、RESTful风格接口以及HTTP工具。下面将分别详细介绍这些知识点。 1. **Jedis**: Jedis是Java语言编写的...

    java常用jar包

    在Java中,要连接到SQL Server数据库,我们需要Microsoft提供的JDBC驱动,如`sqljdbc4.jar`或`mssql-jdbc.jar`。这些驱动实现了Java.sql接口,允许Java应用程序通过SQL语句执行数据库操作。例如,创建数据库连接、...

    java常用代码工具包

    这个"java常用代码工具包"中的"新建文件夹"可能包含了上述功能的实现代码或配置文件。使用时,开发者需要将这些代码导入到项目中,通过引用和调用来利用这些工具类。同时,阅读和理解这些工具类的源代码也是一种学习...

    常用 单位换算器 Java 源代码

    本项目“常用单位换算器 Java源代码”提供了一个实用的工具,能够帮助用户进行长度、时间、温度等常见物理量的单位转换。下面将详细介绍这个项目中的关键知识点。 首先,我们来探讨Java编程基础。Java是一种面向...

Global site tag (gtag.js) - Google Analytics