java 常用方法-阿里云开发者社区

开发者社区> 黄威的世界> 正文

java 常用方法

简介:
+关注继续查看

1,转化文件编码

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

Java代码  收藏代码
  1. /*** 
  2.      *  
  3.      * @param srcfile  : source file 
  4.      * @param targfile : target file 
  5.      * @param inputCharset  : from charset 
  6.      * @param outputCharset : to charset 
  7.      */  
  8.     public static void convertEncoding(File srcfile, File targfile,  
  9.             String inputCharset, String outputCharset) {  
  10.         FileInputStream fin = null;  
  11.         FileOutputStream fout = null;  
  12.         char[] cbuf = new char[BUFF_SIZE];  
  13.         int size_char;  
  14.         try {  
  15.             fin = new FileInputStream(srcfile);  
  16.             fout = new FileOutputStream(targfile);  
  17.             InputStreamReader isr = null;  
  18.             OutputStreamWriter osw = null;  
  19.             try {  
  20.                 isr = new InputStreamReader(fin, inputCharset);  
  21.                 osw = new OutputStreamWriter(fout, outputCharset);  
  22.                 while ((size_char = isr.read(cbuf)) != NEGATIVE_ONE) {  
  23.                     osw.write(cbuf, 0, size_char);  
  24.                 }  
  25.                 //  
  26.             } catch (UnsupportedEncodingException e1) {  
  27.                 e1.printStackTrace();  
  28.             } catch (IOException e1) {  
  29.                 e1.printStackTrace();  
  30.             } finally {  
  31.                 try {  
  32.                     isr.close();  
  33.                     osw.close();  
  34.                 } catch (IOException e1) {  
  35.                     e1.printStackTrace();  
  36.                 }  
  37.   
  38.             }  
  39.   
  40.         } catch (FileNotFoundException e1) {  
  41.             e1.printStackTrace();  
  42.         } finally {  
  43.             try {  
  44.                 if (fin != null) {  
  45.                     fin.close();  
  46.                 }  
  47.                 if (fout != null) {  
  48.                     fout.close();  
  49.                 }  
  50.             } catch (IOException e1) {  
  51.                 e1.printStackTrace();  
  52.             }  
  53.         }  
  54.     }  

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

Java代码  收藏代码
  1. /** 
  2.      * 字节数大于1,则返回true 
  3.      *  
  4.      * @param c 
  5.      * @return 
  6.      */  
  7.     public static boolean isChinese(char c) {  
  8.         return String.valueOf(c).getBytes().length > 1;  
  9.     }  

 

3,获取文件的MD5值

Java代码  收藏代码
  1. /** 
  2.      * Get MD5 of one file! 
  3.      *  
  4.      * @param file 
  5.      * @return 
  6.      */  
  7.     public static String getFileMD5(File file) {  
  8.         if (!file.exists() || !file.isFile()) {  
  9.             return null;  
  10.         }  
  11.         MessageDigest digest = null;  
  12.         FileInputStream in = null;  
  13.         byte buffer[] = new byte[1024];  
  14.         int len;  
  15.         try {  
  16.             digest = MessageDigest.getInstance("MD5");  
  17.             in = new FileInputStream(file);  
  18.             while ((len = in.read(buffer, 01024)) != -1) {  
  19.                 digest.update(buffer, 0, len);  
  20.             }  
  21.             in.close();  
  22.         } catch (Exception e) {  
  23.             e.printStackTrace();  
  24.             return null;  
  25.         }  
  26.         BigInteger bigInt = new BigInteger(1, digest.digest());  
  27.         return bigInt.toString(16);  
  28.     }  

 

4,获取实际类型的class

Java代码  收藏代码
  1. /*** 
  2.      * 获取实际的子类的class 
  3.      * @param clz 
  4.      * @return 
  5.      */  
  6.     public static <T> Class<T> getGenricClassType(  
  7.             @SuppressWarnings("rawtypes") Class clz) {  
  8.         Type type = clz.getGenericSuperclass();  
  9.         if (type instanceof ParameterizedType) {  
  10.             ParameterizedType pt = (ParameterizedType) type;  
  11.             Type[] types = pt.getActualTypeArguments();  
  12.             if (types.length > 0 && types[0instanceof Class) {  
  13.                 return (Class) types[0];  
  14.             }  
  15.         }  
  16.         return (Class) Object.class;  
  17.     }  

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

Java代码  收藏代码
  1. package com.common.dao.generic;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.hibernate.Criteria;  
  6. import org.hibernate.SessionFactory;  
  7. import org.hibernate.criterion.Example;  
  8.   
  9. import com.common.util.SystemUtil;  
  10. /*** 
  11.  * all dao must extends this class 
  12.  *  
  13.  * @author huangwei 
  14.  * 
  15.  * @param <T> 
  16.  */  
  17. public abstract class GenericDao<T> {  
  18.     /*** 
  19.      * generated by spring configuration file 
  20.      */  
  21.     protected SessionFactory sessionFactory;  
  22.     protected final Class<T> clz = SystemUtil.getGenricClassType(getClass());  
  23.   
  24.     public SessionFactory getSessionFactory() {  
  25.         return sessionFactory;  
  26.     }  
  27.   
  28.     public void setSessionFactory(SessionFactory sessionFactory) {  
  29.         this.sessionFactory = sessionFactory;  
  30.     }  
  31.   
  32.     /***************************************************************/  
  33.     public void add(Object obj) {  
  34.         this.sessionFactory.getCurrentSession().save(obj);  
  35.     }  
  36.   
  37.     public void save(Object obj) {  
  38.         this.add(obj);  
  39.     }  
  40.   
  41.     public void delete(Object obj) {  
  42.         this.sessionFactory.getCurrentSession().delete(obj);  
  43.     }  
  44.   
  45.     public void deleteById(int id) {  
  46.         this.sessionFactory.getCurrentSession().delete(get(id));  
  47.     }  
  48.   
  49.     public T get(int id) {  
  50.         return (T) this.sessionFactory.getCurrentSession().get(clz, id);  
  51.     }  
  52.   
  53.     public void update(Object obj) {  
  54.         this.sessionFactory.getCurrentSession().update(obj);  
  55.     }  
  56.   
  57.     public List<T> getAll() {  
  58.         return (List<T>) this.sessionFactory.getCurrentSession()  
  59.                 .createCriteria(clz).list();  
  60.     }  
  61.   
  62.     /*** 
  63.      * Find in DB depending on conditions 
  64.      *  
  65.      * @param obj 
  66.      * @return 
  67.      */  
  68.     public List<T> find(Object obj) {  
  69.         if (obj == null) {  
  70.             return this.getAll();  
  71.         } else {  
  72.             Example example = Example.create(obj).excludeZeroes();  
  73.             Criteria criteria = this.sessionFactory.getCurrentSession()  
  74.                     .createCriteria(clz).add(example);  
  75.             return (List<T>)criteria.list();  
  76.         }  
  77.     }  
  78.   
  79. }  

 

Java代码  收藏代码
  1. package com.shop.jn.dao;  
  2.   
  3. import com.common.dao.generic.GenericDao;  
  4. import com.shop.jn.entity.Goods;  
  5.   
  6. public class GoodsDao extends GenericDao<Goods> {  
  7. }  

5,合并字节数组

Java代码  收藏代码
  1. /*** 
  2.      * 合并字节数组 
  3.      * @param a 
  4.      * @return 
  5.      */  
  6.     public static byte[] mergeArray(byte[]... a) {  
  7.         // 合并完之后数组的总长度  
  8.         int index = 0;  
  9.         int sum = 0;  
  10.         for (int i = 0; i < a.length; i++) {  
  11.             sum = sum + a[i].length;  
  12.         }  
  13.         byte[] result = new byte[sum];  
  14.         for (int i = 0; i < a.length; i++) {  
  15.             int lengthOne = a[i].length;  
  16.             // 拷贝数组  
  17.             System.arraycopy(a[i], 0, result, index, lengthOne);  
  18.             index = index + lengthOne;  
  19.         }  
  20.         return result;  
  21.     }  

 

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

方式一:

Java代码  收藏代码
  1. /** 
  2.      *  
  3.      * The number of occurrences of find keyword in srcText 
  4.      *  
  5.      * @param srcText 
  6.      * @param keyword 
  7.      * @return 
  8.      */  
  9.     public static int findStr1(String srcText, String keyword) {  
  10.         int count = 0;  
  11.         int leng = srcText.length();  
  12.         int j = 0;  
  13.         for (int i = 0; i < leng; i++) {  
  14.             if (srcText.charAt(i) == keyword.charAt(j)) {  
  15.                 j++;  
  16.                 if (j == keyword.length()) {  
  17.                     count++;  
  18.                     j = 0;  
  19.                 }  
  20.             } else {  
  21.                 i = i - j;// should rollback when not match  
  22.                 j = 0;  
  23.             }  
  24.         }  
  25.   
  26.         return count;  
  27.     }  

 方式二:

Java代码  收藏代码
  1. public static int findStr2(String srcText, String keyword) {  
  2.         int count = 0;  
  3.         Pattern p = Pattern.compile(keyword);  
  4.         Matcher m = p.matcher(srcText);  
  5.         while (m.find()) {  
  6.             count++;  
  7.         }  
  8.         return count;  
  9.     }  

 

 

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

Java代码  收藏代码
  1. /*** 
  2.      *  
  3.      * @param source 
  4.      * @param findTarget 
  5.      *            :key word 
  6.      * @param pos 
  7.      *            :where start from 
  8.      * @return index 
  9.      */  
  10.     public static int findBytes(byte[] source, byte[] findTarget, int pos) {  
  11.         int i, j, k = 0;  
  12.         i = pos;  
  13.         j = 0;  
  14.         while (i < source.length && j < findTarget.length) {  
  15.             if (source[i] == findTarget[j]) {  
  16.                 ++i;  
  17.                 ++j;  
  18.                 if (j == findTarget.length) {  
  19.                     k = k + 1;// k++  
  20.                     break;  
  21.                     // j = 0;  
  22.                 }  
  23.             } else {  
  24.                 i = i - j + 1;  
  25.                 j = 0;  
  26.             }  
  27.         }  
  28.         return k == 0 ? -1 : i - j;  
  29.     }  
  30.   
  31.     /*** 
  32.      * start from 0 
  33.      *  
  34.      * @param source 
  35.      * @param findTarget 
  36.      * @return 
  37.      */  
  38.     public static int findBytes(byte[] source, byte[] findTarget) {  
  39.         return findBytes(source, findTarget, 0);  
  40.     }  

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL优化常用方法2
访问Table的方式
755 0
Java class.getResource()的用法
用Java获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用Java的File类,如要取得C:/test.txt文件,就会这样用File file = newFile("C:/test.txt");这样用有什么问题,相信大家都知道,就是路径硬编码,对于Java精神来说,应用应该一次成型,到处可用,并且从现实应用来讲,最终生成的应用也会部署到Windows外的操作系统中,对于Linux来说,在应用中用了C:/这样的字样,就是失败,所以,我们应该尽量避免使用硬编码,即直接使用绝对路径。
1331 0
6.3 file 常用方法
import codecs # readlines() 方法,读取文件所有内容 # 是把文件中每行的内容作为一个字符串中的单个元素 # 放在一个列表 list 中 f=codecs.
482 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11879 0
[Java 基础]方法
方法的定义 Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 语法 修饰符 返回值类型 方法名 (参数类型 参数名) {    ...    方法体    ...    return 返回值;}   方法包含一个方法头和一个方法体。
444 0
20.Eclipse下Ndk开发(pthread开启线程调用Java方法)
本项目最终的目的是在pthread线程中,调用Java一个工具类得到多个uuid,然后调用类中另一个方法弹出toast,实现在c中获取安卓上下文对象Context 编译native方法,生成头文件的一系列过程不再赘述,直接上代码,都在注释中 PosixUtils: package com.
979 0
SQL优化常用方法10
删除重复记录
659 0
java方法重写和super关键字
//java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //super:强行调用父类方法的执行 /*重载和重写的区别? * 重载是发生在一个类中 对权限没...
731 0
+关注
黄威的世界
我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术
668
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载