复制文件的异常处理

Posted lsswudi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复制文件的异常处理相关的知识,希望对你有一定的参考价值。

技术图片

示例代码

package com.io.liushuaishuai;

import java.io.*;

public class copyFolderDemo01 
    public static void main(String[] args) throws IOException 
        //创建数据源File对象,路径是c:\\\\java
        File srcfile = new File("c:\\\\java");
        //创建目的地File对象,路径是c:\\\\F
        File destfile = new File("c:\\\\F");

        //文件夹复制
        copyFolder(srcfile, destfile);


    

    private static void copyFolder(File srcfile, File destfile) throws IOException 
        if (srcfile.isDirectory()) 
            String srcfileName = srcfile.getName();
            File newFolder = new File(destfile, srcfileName);
            if (!newFolder.exists()) 
                newFolder.mkdir();
            
            File[] filearray = srcfile.listFiles();
            for (File file : filearray) 
                copyFolder(file, destfile);
            
         else 
            copyFile(srcfile, new File(destfile, srcfile.getName()));
        

    

//    jdk7以后的改进方案

    private static void copyFile(File srcfile, File destfile) 
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destfile));) 


            byte[] bys = new byte[1024];
            int len;
            while ((len = bis.read(bys)) != -1) 
                bos.write(bys, 0, len);
                bos.flush();
            

         catch (IOException e) 
            e.printStackTrace();
        


    
//try....catch finally
    /*
    private static void copyFile(File srcfile, File destfile) 
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try 
             bis = new BufferedInputStream(new FileInputStream(srcfile));
            bos = new BufferedOutputStream(new FileOutputStream(destfile));

            byte[] bys = new byte[1024];
            int len;
            while ((len = bis.read(bys)) != -1) 
                bos.write(bys, 0, len);
                bos.flush();
            
         catch (IOException e) 
            e.printStackTrace();
         finally 
            if(bis!=null) 
                try 
                    bis.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if(bos!=null) 
                try 
                    bos.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        


    
    */
    /*
private static void copyFile(File srcfile, File destfile) 


    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destfile));

    byte[] bys = new byte[1024];
    int len;
    while ((len = bis.read(bys)) != -1) 
        bos.write(bys, 0, len);
        bos.flush();
    


    bis.close();
    bos.close();
*/

 

以上是关于复制文件的异常处理的主要内容,如果未能解决你的问题,请参考以下文章

复制文件的异常处理

使用 Avro 文件批量复制到 Amazon Redshift 中的异常处理

GTID模式复制异常处理

异常处理——显示发生错误的行号? [复制]

[Java基础]复制文件的异常处理try...catch...finally的做法

java文件流stream,拷贝复制文件,读取文件,写入文件,及抛出异常的处理