Java里面有许多需要copy的地方,比如copy文件,copy数组,现总结如下
(1)copy文件
- public static void copyFile(String resourceFileName, String targetFileName)
- throws IOException {
- File resourceFile = new File(resourceFileName);
- File targetFile = new File(targetFileName);
- if (!resourceFile.exists()) {
- System.out.println("[copyFile ]: resource file has not been found:"
- + resourceFileName);
- }
- if (!resourceFile.isFile()) {
- System.out.println("[copyFile ]: directory can not be copyed:"
- + resourceFileName);
- }
- if (targetFile.isDirectory()) {
- targetFile = new File(targetFile, resourceFile.getName());
- }
- FileInputStream resource = null;
- FileOutputStream target = null;
- try {
- resource = new FileInputStream(resourceFile);
- target = new FileOutputStream(targetFile);
- copyFile(resourceFile, targetFile);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (resource != null) {
- resource.close();
- }
- if (target != null) {
- target.close();
- }
- }
- }
- /**
- *
- * @param srcFile
- * :must be regular file,can not be folder;
- * @param targetFile
- * :must be regular file,can not be folder;
- * @throws IOException
- */
- public static void copyFile(File srcFile, File targetFile)
- throws IOException {
- FileInputStream in = new FileInputStream(srcFile);
- FileOutputStream out = new FileOutputStream(targetFile);
- copyFile(in, out);
- }
- public static void copyFile(InputStream in, FileOutputStream target)
- throws IOException {
- // File targetFile = new File(targetFileName);
- // FileOutputStream target = null;
- // if (targetFile.isDirectory())
- // {
- // targetFile = new File(targetFile, simpleName);
- // }
- try {
- // target = new FileOutputStream(targetFile);
- byte[] buffer = new byte[BUFF_SIZE];
- int byteNum;
- while ((byteNum = in.read(buffer)) != NEGATIVE_ONE) {
- target.write(buffer, 0, byteNum);
- }
- System.out.println("[SystemUtil:copyFile]:file copy successfully!");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (in != null) {
- in.close();
- in = null;
- }
- if (target != null) {
- target.close();
- target = null;
- }
- }
- }
(2)copy数组
- /***
- * 合并字节数组
- *
- * @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;
- if (lengthOne == 0) {
- continue;
- }
- // 拷贝数组
- System.arraycopy(a[i], 0, result, index, lengthOne);
- index = index + lengthOne;
- }
- return result;
- }
- /***
- * append a byte.
- *
- * @param a
- * @param b
- * @return
- */
- public static byte[] appandByte(byte[] a, byte b) {
- int length = a.length;
- byte[] resultBytes = new byte[length + 1];
- System.arraycopy(a, 0, resultBytes, 0, length);
- resultBytes[length] = b;
- return resultBytes;
- }
- public static byte[] copyByte(int start, int length, byte[] source) {
- byte[] des = new byte[length];
- System.arraycopy(source, start, des, 0, length);
- return des;
- }
(3)copy List
- /***
- * 复制 list
- * @param srcList
- * @param start
- * @param length
- * @return
- */
- public static List copyList(List srcList,int start,int length){
- if(ValueWidget.isNullOrEmpty(srcList)){
- return null;
- }
- List resultList=new ArrayList();
- for(int i=start;i<length+start&& i<srcList.size();i++){
- resultList.add(srcList.get(i));
- }
- return resultList;
- }
测试:
- @Test
- public void test_ArrayList_remove(){
- List list=new ArrayList<String>();
- int range=3;
- list.add("aa");
- list.add("bb");
- list.add("cc");
- list.add("dd");
- list.add("ee");
- list.add("ff");
- // if(list.size()>range){//excel前两行是标题
- // System.out.println("移除序号"+range+"....");
- // for(int j=range;j<=list.size()+1;j++){
- // Object obj32=list.remove(range);
- // }
- // }
- System.out.println( SystemHWUtil. copyList(list, 0, 14));
- }
参考:
http://www.baidu.com/link?url=Wwh8KqbUeOaaKFCcp8xAQ8ALHUuunhm1kR95EAbhk20LkxkL_8pQbFCfnaoKqP1KX4pzf8lCeRWWFk2fEDqK5a
http://www.yunmasoft.com