容器与文件操作(四)文件的拷贝

来源:互联网 发布:淘宝抢红包群 编辑:程序博客网 时间:2024/05/08 01:07
上次说了文件的读和写操作,文件拷贝其实就是把文件的读和写结合起来。其实现基本思想还是以程序为桥梁,一边不断的从src文件中读取数据流,同时写出到指定的dest文件中。前面说过,字节流可以处理一切格式的文件,可以把字符流看做字节流的特例,在进行处理时用read()和write()方法以及char[]数组进行读取和写出即可,其他部分是一样的。这里以字节流为例将文件的拷贝分为下面4个步骤:
1、建立联系
 依程序为中心,用File对象建立源头文件(src)和目的地文件(dest)的联系,注意src必须存在且为文件,这里可以加一个判断;
2、选择流:文件输入流 InputStream FileInputStream
    文件输出流 OutputStream FileOutputStream
3、操作:进行文件的拷贝,这里又分为两部分:读取和写出。不同于前面单独进行读写的时候,是将读到的内容打印在控制台,或者是将程序中的String写入到指定文件中,这里两个是同时进行操作的,即:程序将src读到的内容不断写出到指定文件中。注意有可能最后一部分输出流没有被读取到,这里我们使用方法flush(),它的作用是刷新此输出流并强制写出所有缓冲的输出字节。

4、释放资源:关闭两个流,这里注意为了确保所有字节都被读取到,我们一般默认先打开的流后关闭,即:先关闭输出流再关闭输入流。下面是我写的文件拷贝代码:

/** * 文件的拷贝 * @param 源文件路径 * @param 目录文件路径 * @throws FileNotFoundException,IOException * @return */public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException {//1、建立联系 源(存在且为文件)+目的地(文件可以不存在)File src=new File(srcPath);File dest=new File(destPath);if(!src.isFile()){//不是文件或者为nullSystem.out.println("只能拷贝文件");throw new IOException("只能拷贝文件");}//2、选择流InputStream is=new FileInputStream(src);OutputStream os=new FileOutputStream(dest);//3、文件的拷贝 循环+读取+写出byte[] flush=new byte[1024];int len=0;//读取while(-1!=(len=is.read(flush))){//写出os.write(flush, 0, len);}os.flush();//强制刷出//关闭流:先打开的后关闭os.close();is.close();}
最后在主方法中声明两个文件即可。

0 0
原创粉丝点击