java 各种copy

Java里面有许多需要copy的地方,比如copy文件,copy数组,现总结如下

(1)copy文件

Java代码   收藏代码
  1. public static void copyFile(String resourceFileName, String targetFileName)  
  2.             throws IOException {  
  3.         File resourceFile = new File(resourceFileName);  
  4.         File targetFile = new File(targetFileName);  
  5.         if (!resourceFile.exists()) {  
  6.             System.out.println("[copyFile ]: resource file has not been found:"  
  7.                     + resourceFileName);  
  8.         }  
  9.         if (!resourceFile.isFile()) {  
  10.             System.out.println("[copyFile ]: directory can not be copyed:"  
  11.                     + resourceFileName);  
  12.         }  
  13.   
  14.         if (targetFile.isDirectory()) {  
  15.             targetFile = new File(targetFile, resourceFile.getName());  
  16.         }  
  17.   
  18.         FileInputStream resource = null;  
  19.         FileOutputStream target = null;  
  20.         try {  
  21.             resource = new FileInputStream(resourceFile);  
  22.             target = new FileOutputStream(targetFile);  
  23.             copyFile(resourceFile, targetFile);  
  24.         } catch (Exception e) {  
  25.             e.printStackTrace();  
  26.         } finally {  
  27.             if (resource != null) {  
  28.                 resource.close();  
  29.             }  
  30.             if (target != null) {  
  31.                 target.close();  
  32.             }  
  33.         }  
  34.     }  
  35.   
  36. /** 
  37.      *  
  38.      * @param srcFile 
  39.      *            :must be regular file,can not be folder; 
  40.      * @param targetFile 
  41.      *            :must be regular file,can not be folder; 
  42.      * @throws IOException 
  43.      */  
  44.     public static void copyFile(File srcFile, File targetFile)  
  45.             throws IOException {  
  46.         FileInputStream in = new FileInputStream(srcFile);  
  47.   
  48.         FileOutputStream out = new FileOutputStream(targetFile);  
  49.         copyFile(in, out);  
  50.   
  51.     }  
  52. public static void copyFile(InputStream in, FileOutputStream target)  
  53.             throws IOException {  
  54.         // File targetFile = new File(targetFileName);  
  55.         // FileOutputStream target = null;  
  56.         // if (targetFile.isDirectory())  
  57.         // {  
  58.         // targetFile = new File(targetFile, simpleName);  
  59.         // }  
  60.         try {  
  61.             // target = new FileOutputStream(targetFile);  
  62.             byte[] buffer = new byte[BUFF_SIZE];  
  63.             int byteNum;  
  64.   
  65.             while ((byteNum = in.read(buffer)) != NEGATIVE_ONE) {  
  66.                 target.write(buffer, 0, byteNum);  
  67.   
  68.             }  
  69.             System.out.println("[SystemUtil:copyFile]:file copy successfully!");  
  70.         } catch (Exception e) {  
  71.             e.printStackTrace();  
  72.         } finally {  
  73.             if (in != null) {  
  74.                 in.close();  
  75.                 in = null;  
  76.             }  
  77.             if (target != null) {  
  78.                 target.close();  
  79.                 target = null;  
  80.             }  
  81.         }  
  82.     }  

 

(2)copy数组

Java代码   收藏代码
  1. /*** 
  2.      * 合并字节数组 
  3.      *  
  4.      * @param a 
  5.      * @return 
  6.      */  
  7.     public static byte[] mergeArray(byte[]... a) {  
  8.         // 合并完之后数组的总长度  
  9.         int index = 0;  
  10.         int sum = 0;  
  11.         for (int i = 0; i < a.length; i++) {  
  12.             sum = sum + a[i].length;  
  13.         }  
  14.         byte[] result = new byte[sum];  
  15.         for (int i = 0; i < a.length; i++) {  
  16.             int lengthOne = a[i].length;  
  17.             if (lengthOne == 0) {  
  18.                 continue;  
  19.             }  
  20.             // 拷贝数组  
  21.             System.arraycopy(a[i], 0, result, index, lengthOne);  
  22.             index = index + lengthOne;  
  23.         }  
  24.         return result;  
  25.     }  
  26. /*** 
  27.      * append a byte. 
  28.      *  
  29.      * @param a 
  30.      * @param b 
  31.      * @return 
  32.      */  
  33.     public static byte[] appandByte(byte[] a, byte b) {  
  34.         int length = a.length;  
  35.         byte[] resultBytes = new byte[length + 1];  
  36.         System.arraycopy(a, 0, resultBytes, 0, length);  
  37.         resultBytes[length] = b;  
  38.         return resultBytes;  
  39.     }  
  40. public static byte[] copyByte(int start, int length, byte[] source) {  
  41.         byte[] des = new byte[length];  
  42.         System.arraycopy(source, start, des, 0, length);  
  43.         return des;  
  44.     }  

 

(3)copy List

Java代码   收藏代码
  1. /*** 
  2.      * 复制 list 
  3.      * @param srcList 
  4.      * @param start 
  5.      * @param length 
  6.      * @return 
  7.      */  
  8.     public static List copyList(List srcList,int start,int length){  
  9.         if(ValueWidget.isNullOrEmpty(srcList)){  
  10.             return null;  
  11.         }  
  12.         List resultList=new ArrayList();  
  13.         for(int i=start;i<length+start&& i<srcList.size();i++){  
  14.             resultList.add(srcList.get(i));  
  15.         }  
  16.         return resultList;  
  17.     }  

 测试:

Java代码   收藏代码
  1. @Test  
  2.     public void test_ArrayList_remove(){  
  3.         List list=new ArrayList<String>();  
  4.         int range=3;  
  5.         list.add("aa");  
  6.         list.add("bb");  
  7.         list.add("cc");  
  8.         list.add("dd");  
  9.         list.add("ee");  
  10.         list.add("ff");  
  11. //      if(list.size()>range){//excel前两行是标题  
  12. //          System.out.println("移除序号"+range+"....");  
  13. //          for(int j=range;j<=list.size()+1;j++){  
  14. //              Object obj32=list.remove(range);  
  15. //          }  
  16. //      }  
  17.         System.out.println( SystemHWUtil. copyList(list, 014));  
  18.     }  

 参考:

http://www.baidu.com/link?url=Wwh8KqbUeOaaKFCcp8xAQ8ALHUuunhm1kR95EAbhk20LkxkL_8pQbFCfnaoKqP1KX4pzf8lCeRWWFk2fEDqK5a

http://www.yunmasoft.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值