黑马程序员_77_字符流文件拷贝练习

来源:互联网 发布:广州盛高软件 编辑:程序博客网 时间:2024/06/04 20:14

 ——- android培训、java培训、期待与您交流! ———-

练习:
拷贝文件
把当前目录下的一个FileReaderDemo.java文件复制到H:盘根目录下

原理:
利用FileReader和FileWriter来读写.

步骤:
1 目的:在H盘下创建目的文件,利用FileWriter关联起来
2 源:创建FileReader对象,和FileReaderDemo.java文件关联起来
3 调用read方法读取文件到缓冲区,再调用write方法写入缓冲区,再刷新到文件中
4 关闭资源

下面采取两种方式实现

import java.io.*;public class FileCopyTest{    public static void main(String[] args)    {        //源文件        File file = new File("FileReaderDemo.java");        //目的文件        File file_2 = new File("H:"+File.separator+"FileReaderDemo(2).java");        long start = System.currentTimeMillis();        //把源文件的内容复制到目的文件        fileCopy_1(file,file_2);        //fileCopy_2(file,file_2);        long end = System.currentTimeMillis();        //打印复制文件花费的时间        System.out.println("复制文件花费:"+(end-start)+"毫秒");        //方式一花费30~39毫秒        //方式二花费2~3毫秒    }    //read()方法,从FileReaderDemo中读一个字符就写一个字符    public static void fileCopy_1(File file,File file_2)    {        FileReader fr = null;//声明FileReader引用        FileWriter fw = null;//声明FileWriter引用        try        {            //1 关联被复制的文件            fr = new FileReader(file);            //2 关联目的文件            fw = new FileWriter(file_2);            //3 读取和写入            int ch = 0;            while((ch=fr.read())!=-1)            {                fw.write((char)ch);                fw.flush();            }        }        catch (IOException e)        {            System.out.println(e.toString());        }        finally        {            if(fr!=null)                try                {                    fr.close();                }                catch (IOException ex)                {                    System.out.println(ex.toString());                }                finally                {                    if(fw!=null)                        try                        {                            fw.close();                        }                        catch (IOException ioe)                        {                            System.out.println(ioe.toString());                        }                }        }    }    //方式二,每次读一个数组,    public static void fileCopy_2(File file,File file_2)    {        FileReader fr = null;//声明FileReader流        FileWriter fw = null;//声明FileWriter流        try        {            fr = new FileReader(file);            fw = new FileWriter(file_2);            char[] buf = new char[1024];            int num = 0;            while((num=fr.read(buf))!=-1)            {                fw.write(new String(buf,0,num));                fw.flush();            }        }        catch (IOException e)        {            throw new RuntimeException(e.toString());        }        finally        {            if(fr!=null)                try                {                    fr.close();                }                catch (IOException ex)                {                    System.out.println(ex.toString());                }                finally                {                    if(fw!=null)                        try                        {                            fw.close();                        }                        catch (IOException ioe)                        {                            System.out.println(ioe.toString());                        }                }        }    }}
0 0
原创粉丝点击