java使用字符流来做文件的拷贝

本文介绍了如何使用Java的字符流进行文件拷贝,包括两种方法:直接读写字符和使用字符数组。字符流适用于文本文件的拷贝,对于非文本文件如MP3、MP4等,应使用字节流。示例代码详细展示了字符流在文件复制中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-------------------------------------java使用字符流来做文件的拷贝 ----------------------------

 

字符流文件拷贝只能拷贝文本类型,像MP3,MP4等等需要使用字节流。

 

范例:把一个java文件拷贝到项目的根目录

 

分析:

 

1.    创建字符输入流的对象。

2.    创建字符输出流的对象。

3.    把输入流输入的数据写入输出流中。

4.    关闭资源。

 

第一种方式

public  class CopyFile {

 

    public  static  void main(String[] args) {

       

        copy();

        System.out.println("done");

       

    }

   

    public  static  void copy() {

       

           //声明文件读取对象

           Reader reader = null;

           //声明文件输出对象

           FileWriter writer = null;

        try {

           //创建读取文件对象

           reader = new FileReader("src/com/rl/io/cha/reader/IOCharReaderDemo.java");

           //创建写入文件对象

           writer = new FileWriter("IOCharWriterDemo.java");

           int  num = -1;

           //循环读取字符

           while((num = reader.read()) != -1) {

               //读取字符写入到输出文件中

               writer.write(num);

              

           }

          

        } catch (FileNotFoundException e) {

           e.printStackTrace();

        } catch (IOException e) {

           e.printStackTrace();

        } finally {

               try {

                   //释放资源,先关闭写,再关闭读取。

                   if(writer != null)

                       //关闭输出对象

                       writer.close();

                   if(reader != null)

                       //关闭读取对象

                       reader.close();

               } catch (IOException e) {

                   e.printStackTrace();

           }

          

        }

       

    }

   

}

 

---------------------------------------------------

第二种方式

使用字符数组读取方式

效率高,建议使用

public  class CopyFile2 {

 

    public  static  void main(String[] args) {

       

        copy();

        System.out.println("done");

       

    }

   

    public  static  void copy() {

       

           //声明文件读取对象

           Reader reader = null;

           //声明文件输出对象

           FileWriter writer = null;

        try {

           //创建读取文件对象

           reader = new FileReader("src/com/rl/io/cha/reader/IOCharReaderDemo.java");

           //创建写入文件对象

           writer = new FileWriter("IOCharWriterDemo.java");

           //定义每次读取长度的对象

           int  len = -1;

           //设置一个存储读取内容的字符数组

           char[] chs = new  char[1024];

           //循环读取字符

           //len不等于-1就读取

           while((len = reader.read(chs)) != -1) {

               //把读取的文件写入到目标文件中

               writer.write(chs,0,len);

              

           }

          

        } catch (FileNotFoundException e) {

           e.printStackTrace();

        } catch (IOException e) {

           e.printStackTrace();

        } finally {

               try {

                   //释放资源,先关闭写,再关闭读取。

                   if(writer != null)

                       //关闭输出对象

                       writer.close();

                   if(reader != null)

                       //关闭读取对象

                       reader.close();

               } catch (IOException e) {

                   e.printStackTrace();

           }

          

        }

       

    }

   

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值