`

java 常用方法

阅读更多

1,转化文件编码

文件的原始编码是inputCharset,转为outputCharset的编码格式

/***
	 * 
	 * @param srcfile  : source file
	 * @param targfile : target file
	 * @param inputCharset  : from charset
	 * @param outputCharset : to charset
	 */
	public static void convertEncoding(File srcfile, File targfile,
			String inputCharset, String outputCharset) {
		FileInputStream fin = null;
		FileOutputStream fout = null;
		char[] cbuf = new char[BUFF_SIZE];
		int size_char;
		try {
			fin = new FileInputStream(srcfile);
			fout = new FileOutputStream(targfile);
			InputStreamReader isr = null;
			OutputStreamWriter osw = null;
			try {
				isr = new InputStreamReader(fin, inputCharset);
				osw = new OutputStreamWriter(fout, outputCharset);
				while ((size_char = isr.read(cbuf)) != NEGATIVE_ONE) {
					osw.write(cbuf, 0, size_char);
				}
				//
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			} finally {
				try {
					isr.close();
					osw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}

			}

		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} finally {
			try {
				if (fin != null) {
					fin.close();
				}
				if (fout != null) {
					fout.close();
				}
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
	}

 2,判断是否是中文字符(包括中文的标点符号,如。)

/**
	 * 字节数大于1,则返回true
	 * 
	 * @param c
	 * @return
	 */
	public static boolean isChinese(char c) {
		return String.valueOf(c).getBytes().length > 1;
	}

 

3,获取文件的MD5值

/**
	 * Get MD5 of one file!
	 * 
	 * @param file
	 * @return
	 */
	public static String getFileMD5(File file) {
		if (!file.exists() || !file.isFile()) {
			return null;
		}
		MessageDigest digest = null;
		FileInputStream in = null;
		byte buffer[] = new byte[1024];
		int len;
		try {
			digest = MessageDigest.getInstance("MD5");
			in = new FileInputStream(file);
			while ((len = in.read(buffer, 0, 1024)) != -1) {
				digest.update(buffer, 0, len);
			}
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		BigInteger bigInt = new BigInteger(1, digest.digest());
		return bigInt.toString(16);
	}

 

4,获取实际类型的class

/***
	 * 获取实际的子类的class
	 * @param clz
	 * @return
	 */
	public static <T> Class<T> getGenricClassType(
			@SuppressWarnings("rawtypes") Class clz) {
		Type type = clz.getGenericSuperclass();
		if (type instanceof ParameterizedType) {
			ParameterizedType pt = (ParameterizedType) type;
			Type[] types = pt.getActualTypeArguments();
			if (types.length > 0 && types[0] instanceof Class) {
				return (Class) types[0];
			}
		}
		return (Class) Object.class;
	}

 应用:在dao层,GoodsDao 继承GenericDao,在GoodsDao 中就不用重复增删改查了。

package com.common.dao.generic;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;

import com.common.util.SystemUtil;
/***
 * all dao must extends this class
 * 
 * @author huangwei
 *
 * @param <T>
 */
public abstract class GenericDao<T> {
	/***
	 * generated by spring configuration file
	 */
	protected SessionFactory sessionFactory;
	protected final Class<T> clz = SystemUtil.getGenricClassType(getClass());

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	/***************************************************************/
	public void add(Object obj) {
		this.sessionFactory.getCurrentSession().save(obj);
	}

	public void save(Object obj) {
		this.add(obj);
	}

	public void delete(Object obj) {
		this.sessionFactory.getCurrentSession().delete(obj);
	}

	public void deleteById(int id) {
		this.sessionFactory.getCurrentSession().delete(get(id));
	}

	public T get(int id) {
		return (T) this.sessionFactory.getCurrentSession().get(clz, id);
	}

	public void update(Object obj) {
		this.sessionFactory.getCurrentSession().update(obj);
	}

	public List<T> getAll() {
		return (List<T>) this.sessionFactory.getCurrentSession()
				.createCriteria(clz).list();
	}

	/***
	 * Find in DB depending on conditions
	 * 
	 * @param obj
	 * @return
	 */
	public List<T> find(Object obj) {
		if (obj == null) {
			return this.getAll();
		} else {
			Example example = Example.create(obj).excludeZeroes();
			Criteria criteria = this.sessionFactory.getCurrentSession()
					.createCriteria(clz).add(example);
			return (List<T>)criteria.list();
		}
	}

}

 

package com.shop.jn.dao;

import com.common.dao.generic.GenericDao;
import com.shop.jn.entity.Goods;

public class GoodsDao extends GenericDao<Goods> {
}

5,合并字节数组

/***
	 * 合并字节数组
	 * @param a
	 * @return
	 */
	public static byte[] mergeArray(byte[]... a) {
		// 合并完之后数组的总长度
		int index = 0;
		int sum = 0;
		for (int i = 0; i < a.length; i++) {
			sum = sum + a[i].length;
		}
		byte[] result = new byte[sum];
		for (int i = 0; i < a.length; i++) {
			int lengthOne = a[i].length;
			// 拷贝数组
			System.arraycopy(a[i], 0, result, index, lengthOne);
			index = index + lengthOne;
		}
		return result;
	}

 

6,判断关键字keyword 在srcText 中出现的次数

方式一:

/**
	 * 
	 * The number of occurrences of find keyword in srcText
	 * 
	 * @param srcText
	 * @param keyword
	 * @return
	 */
	public static int findStr1(String srcText, String keyword) {
		int count = 0;
		int leng = srcText.length();
		int j = 0;
		for (int i = 0; i < leng; i++) {
			if (srcText.charAt(i) == keyword.charAt(j)) {
				j++;
				if (j == keyword.length()) {
					count++;
					j = 0;
				}
			} else {
				i = i - j;// should rollback when not match
				j = 0;
			}
		}

		return count;
	}

 方式二:

public static int findStr2(String srcText, String keyword) {
		int count = 0;
		Pattern p = Pattern.compile(keyword);
		Matcher m = p.matcher(srcText);
		while (m.find()) {
			count++;
		}
		return count;
	}

 

 

7, 获取字节数组findTarget 在字节数组source中出现的位置

/***
	 * 
	 * @param source
	 * @param findTarget
	 *            :key word
	 * @param pos
	 *            :where start from
	 * @return index
	 */
	public static int findBytes(byte[] source, byte[] findTarget, int pos) {
		int i, j, k = 0;
		i = pos;
		j = 0;
		while (i < source.length && j < findTarget.length) {
			if (source[i] == findTarget[j]) {
				++i;
				++j;
				if (j == findTarget.length) {
					k = k + 1;// k++
					break;
					// j = 0;
				}
			} else {
				i = i - j + 1;
				j = 0;
			}
		}
		return k == 0 ? -1 : i - j;
	}

	/***
	 * start from 0
	 * 
	 * @param source
	 * @param findTarget
	 * @return
	 */
	public static int findBytes(byte[] source, byte[] findTarget) {
		return findBytes(source, findTarget, 0);
	}

 

 

0
1
分享到:
评论
1 楼 superich2008 2013-08-01  
6,判断关键字keyword 在srcText 中出现的次数
findStr2()如果查找的关键字包含有正则表达式特殊字符,结果就有问题,关键字要处理正则表达式特殊字符才行。

附:正则表达式特殊字符
'[', ']', '^', '$', '.', '|', '?', '*', '+', '(', ')','\\','{','}'

相关推荐

    Java常用方法大全.pdf

    Java常用方法大全是涵盖了Java编程语言中频繁使用的函数、方法及类库的集合。这些方法从字符串处理到组件事件监听,从数据类型转换到布局控制,无所不包,为Java开发者提供了一个快速查找、理解和应用这些方法的资源...

    java常用方法大全

    Java编程语言提供了丰富的内置方法,方便开发者处理各种任务。以下是一些常见的Java方法,主要集中在字符串操作、文本组件以及用户界面交互。 1. **字符串方法**: - `length()`:返回字符串的长度,即字符数量。 ...

    JAVA常用方法.rar

    这个压缩包"JAVA常用方法.rar"可能包含了各种常用的Java方法示例或者详细解释,涵盖了基础到进阶的各种功能。下面,我们将深入探讨一些Java中常见的方法,以及它们在实际编程中的应用。 1. **字符串操作方法** - `...

    Java常用方法总结

    ### Java常用方法总结 #### 一、JDK环境变量配置详解 在开发Java应用程序之前,首先需要正确地配置好JDK环境变量。这一步对于确保Java应用程序能够在开发环境中正常运行至关重要。 1. **配置JAVA_HOME变量** - ...

    java常用方法和方法大全

    以上只是Java常用方法和概念的一部分,Java API中包含大量实用的功能,熟练掌握它们能够帮助开发者更高效地编写高质量的代码。在学习过程中,不断实践和理解这些方法的使用场景和原理,将有助于提升编程技能。

    Java常用方法大全

    Java常用方法大全

    用我工作经历总结的java常用方法和注意的问题

    在Java编程中,掌握一些常用的方法和注意事项是提高效率的关键。以下是一些基于提供的内容整理出的Java知识点: 1. **类型转换**: - `String` 转 `int`:通过 `Integer.parseInt()` 方法将字符串转换为整型。如 `...

    java常用方法转换时间等等

    本篇文章将围绕"java常用方法转换时间等等"这一主题,详细讲解Java中处理时间、算法、加密解密以及数据库连接等核心知识点。 首先,让我们从时间处理开始。在Java中,日期和时间的处理主要有两个重要的类:`java....

    commons-lang3-3.5-bin下载,commons-lang是java常用方法集合封装了一些常用的java方法

    commons-lang是java常用方法集合封装了一些常用的java方法

    Java 常用方法总结 字数字数

    Java 常用方法总结 字数字数字数字数字数字数字数字数

    JAVA常用类的使用方法

    【JAVA常用类的使用方法】 在Java编程语言中,有许多内置的类提供了各种实用功能,大大简化了开发工作。以下是一些常用的Java类及其主要使用方法: 1. **Integer 类**: - Integer 类是 Java 中对基本数据类型 ...

    java 常用方法整理

    Java是一种广泛使用的面向对象...以上只是部分常用方法的简介,实际编程中还有许多其他功能和库,如网络编程、多线程、反射、集合框架等,都是Java开发者必备的知识点。不断学习和实践,才能更好地利用Java的强大功能。

    java常用方法案例12个

    qf01:期和时间常用方法 qf02:获取当路径两种方法 qf03:使用StringBuilder字符串拼接 qf04:常用数据类型转换 qf05:文件操作+txt读写 qf06:list集合相关操作 qf07:http请求get、post qf08:线程与委托 qf09:...

    java程序各种常用方法集锦

    本资源"java程序各种常用方法集锦"正是为了解决这些问题而整理的一份综合性的代码库,包含了大量实用的代码示例。下面,我们将详细探讨这些关键知识点。 1. **集合操作**: - `ArrayList`与`LinkedList`:两种最...

    java常用方法

    java 一些常用方法封装 包括某年某月时间的获取获得当天0点时间 获得当天24点时间

Global site tag (gtag.js) - Google Analytics