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); }
相关推荐
Java常用方法大全是涵盖了Java编程语言中频繁使用的函数、方法及类库的集合。这些方法从字符串处理到组件事件监听,从数据类型转换到布局控制,无所不包,为Java开发者提供了一个快速查找、理解和应用这些方法的资源...
Java编程语言提供了丰富的内置方法,方便开发者处理各种任务。以下是一些常见的Java方法,主要集中在字符串操作、文本组件以及用户界面交互。 1. **字符串方法**: - `length()`:返回字符串的长度,即字符数量。 ...
这个压缩包"JAVA常用方法.rar"可能包含了各种常用的Java方法示例或者详细解释,涵盖了基础到进阶的各种功能。下面,我们将深入探讨一些Java中常见的方法,以及它们在实际编程中的应用。 1. **字符串操作方法** - `...
### Java常用方法总结 #### 一、JDK环境变量配置详解 在开发Java应用程序之前,首先需要正确地配置好JDK环境变量。这一步对于确保Java应用程序能够在开发环境中正常运行至关重要。 1. **配置JAVA_HOME变量** - ...
以上只是Java常用方法和概念的一部分,Java API中包含大量实用的功能,熟练掌握它们能够帮助开发者更高效地编写高质量的代码。在学习过程中,不断实践和理解这些方法的使用场景和原理,将有助于提升编程技能。
Java常用方法大全
在Java编程中,掌握一些常用的方法和注意事项是提高效率的关键。以下是一些基于提供的内容整理出的Java知识点: 1. **类型转换**: - `String` 转 `int`:通过 `Integer.parseInt()` 方法将字符串转换为整型。如 `...
本篇文章将围绕"java常用方法转换时间等等"这一主题,详细讲解Java中处理时间、算法、加密解密以及数据库连接等核心知识点。 首先,让我们从时间处理开始。在Java中,日期和时间的处理主要有两个重要的类:`java....
commons-lang是java常用方法集合封装了一些常用的java方法
Java 常用方法总结 字数字数字数字数字数字数字数字数
【JAVA常用类的使用方法】 在Java编程语言中,有许多内置的类提供了各种实用功能,大大简化了开发工作。以下是一些常用的Java类及其主要使用方法: 1. **Integer 类**: - Integer 类是 Java 中对基本数据类型 ...
Java是一种广泛使用的面向对象...以上只是部分常用方法的简介,实际编程中还有许多其他功能和库,如网络编程、多线程、反射、集合框架等,都是Java开发者必备的知识点。不断学习和实践,才能更好地利用Java的强大功能。
qf01:期和时间常用方法 qf02:获取当路径两种方法 qf03:使用StringBuilder字符串拼接 qf04:常用数据类型转换 qf05:文件操作+txt读写 qf06:list集合相关操作 qf07:http请求get、post qf08:线程与委托 qf09:...
本资源"java程序各种常用方法集锦"正是为了解决这些问题而整理的一份综合性的代码库,包含了大量实用的代码示例。下面,我们将详细探讨这些关键知识点。 1. **集合操作**: - `ArrayList`与`LinkedList`:两种最...
java 一些常用方法封装 包括某年某月时间的获取获得当天0点时间 获得当天24点时间