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

相关文章
|
缓存 Java Apache
Java Bean Copy框架性能对比
一、问题分析 背景 相同server机器上的相同方法在方法调用链任何参数都一致的情况消耗时间差别非常大,举例说明,类A有方法demo(), 通过分析发现同一台机器(也是一个jvm进程)对该方法的两次调用消耗时间竟然有200ms的差距。
13229 50
|
Java
java中copy 一个list集合的方法
java将一个list里的数据转移到另外一个list,可以使用for语句,一次使用add方法,示例如下:   ArrayList list1=new ArrayList(); list1.add("1"); list1.
3048 0
【监听文件 多线程】使用java--WatchService监听文件 开启多线程copy文件
有一个小需求: 在PC跟前没有人的时候,迅雷下载文件 至PC磁盘上,并且自动移动文件到U盘上,小主只要在走的时候取走U盘即可。 基于这个需求,有了下面这段代码:【JDK  1.8】 1 package com.
1908 0
|
Java
【Util】java copy bean 反射
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
705 0
|
Java
java移动/赋值文件 copy/move file
1 public class FileAccess 2 { 3 4 public static boolean Move(File srcFile, String destPath) 5 { 6 // Destination directory ...
602 0
|
3天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
39 17
|
14天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
16天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。