四、java IO--使用字节流拷贝文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream
/**
 * 文件的拷贝
 * 1、建立连接
 * 2、选择流
 *              文件输入流  InputStream FileInputStream
                  文件输出流  OutputStream FileOutputStream
 * 3、操作:
 *                 循环{读取+写出} + 强制刷新
 * 4、释放资源
 * @author baba
 *
 */
public class CopyFile {
    public static void main(String[] args) {
        String srcPath = "F:/read.txt";
        String destPath = "F:/write.txt";
        copyFile(new File(srcPath),new File(destPath));
    }
    public static void copyFile(File src,File dest){
        
        if(! src.isFile()){ //当不是文件或者为null
            System.out.println("只能拷贝文件");
            try {
                throw new IOException("只能拷贝文件");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(dest.isDirectory()){    //不能建立于文件夹同名的文件
            System.out.println(dest.getAbsolutePath()+"不能建立于文件夹同名的文件");
            try {
                throw new IOException(dest.getAbsolutePath()+"不能建立于文件夹同名的文件");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //1、建立连接
        InputStream is =null;
        OutputStream os = null;
        try {
            //2、选择流
             is = new FileInputStream(src);
             os = new FileOutputStream(dest);
            //3、操作: 循环{读取+写出} + 强制刷新
            byte[] inData = new byte[1024];
            int len = 0;
            while(-1 != (len = is.read(inData))){    //读取文件
                os.write(inData, 0, len);    //每次以inData大小读取数据
            }
            os.flush();    //将存储在管道中的数据强制刷新出去
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件不存在!"); 
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("读取文件失败!");
        }finally {
            if (os != null)
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            if (is != null)
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    }
}

 

posted @ 2018-01-29 17:25  JQS  阅读(335)  评论(0编辑  收藏  举报