java中字符流输出流FileWriter详解

-------------------------------------java中字符流输出流FileWriter详解----------------------------

 

 

IO流

IO流在java中从输入输出角度分类:

1.    输入流:从文件中读取数据,或者从键盘输入数据都属于输入流

2.    输出流:向文件中写入数据

 

IO流在java中从数据的角度来分类:

1.    字符流

文本,我们能读的懂的都可以认为是字符流

字符输入流的超类:Reader(抽象类)

子类:FileReader,BufferedReader

字符输出流的超类:writer(抽象类)

子类:FileWriter,BufferedWriter

 

2.    字节流

二进制的数据,这种数据我们一般读不懂。

比如:图片文件,MP3文件。

字节输入流的超类:InputStream(抽象类)

子类:FileInputStream

字节输出流的超类:OutputStream(抽象类)

类:FileOutputStream

=========================================

 

1.、字符流

 

使用字符流向一个文件输入helloworld

 

分析:

步骤:

1.需要创建文件

2.创建输出流对象

3.把流指向指定的文件

4.释放资源

 

输出字符流的FileWriter的构造器

      

构造方法摘要

FileWriter(File file)
          根据给定的 File 对象构造一个 FileWriter 对象。

FileWriter(File file, boolean append)
          根据给定的 File 对象构造一个 FileWriter 对象。

FileWriter(FileDescriptor fd)
          构造与某个文件描述符相关联的 FileWriter 对象。

FileWriter(String fileName)
          根据给定的文件名构造一个 FileWriter 对象。

FileWriter(String fileName, boolean append)
          根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

 

第一种方法:

public  class IOcharDemo {

 

    public  static  void main(String[] args) {

        //创建文件

        File file = new File("a.txt");

       

        //创建输出流的对象

        FileWriter fw = null;

        try {

           //为什么要处理异常?

           //当我们在往文件对象写入的时候,文件对象被删除了,我们就要处理异常

           //对于IO来说都有异常的问题,都要处理

            fw = new FileWriter(file);

          

           //把内容写入文件

           fw.write("helloworld");

           //字符流的特点:

           //字符流在写完东西后必须要清空缓冲区,把内容写入到文件中

           fw.flush();

        } catch (IOException e) {

           e.printStackTrace();

        }finally {

           //释放支援

           if(fw != null) {

               try {

                   //只要使用IO就必须要处理异常

                   //close会关闭输出流时会先清理缓冲区

                   fw.close();

               } catch (IOException e) {

                   e.printStackTrace();

               }

           }

        }

       

    }

 

   

}

 

 

 

 

第二种方法

直接使用FileWriter的构造器创建文件

public  class IOcharDemo2 {

 

    public  static  void main(String[] args) {

        //创建输出流的对象

        FileWriter fw = null;

        try {

           //为什么要处理异常?

           //当我们在往文件对象写入的时候,文件对象被删除了,我们就要处理异常

           //对于IO来说都有异常的问题,都要处理

           //使用此构造器会自动的创建文件

            fw = new  FileWriter("b.txt");

          

           //把内容写入文件

           fw.write("helloworld");

           //字符流的特点:

           //字符流在写完东西后必须要清空缓冲区,把内容写入到文件中

           fw.flush();

        } catch (IOException e) {

           e.printStackTrace();

        }finally {

           //释放支援

           if(fw != null) {

               try {

                   //只要使用IO就必须要处理异常

                   //close会关闭输出流时会先清理缓冲区

                   fw.close();

               } catch (IOException e) {

                   e.printStackTrace();

               }

           }

        }

       

    }

 

}

 

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

练习:向一个文件中写入一百个helloworld

注意 flush方法最好分段使用,如果写入文件量足够的大效率会大大下降

 

public  class IOcharDemo3 {

 

    public  static  void main(String[] args) {

        //创建输出流的对象

        FileWriter fw = null;

        try {

           //为什么要处理异常?

           //当我们在往文件对象写入的时候,文件对象被删除了,我们就要处理异常

           //对于IO来说都有异常的问题,都要处理

           //使用此构造器会自动的创建文件

            fw = new FileWriter("b.txt");

            

           //在文件中写入100helloworld

            for (inti = 0; i <100; i++) {

                //把内容写入文件

                fw.write("helloworld");

                //每写入十条数据就将次缓冲的文件写入文件对象中

                if(i % 10 == 0) {

                    fw.flush();

                }

           }

            

           //把缓冲区残留的数据写入文件

           fw.flush();

        } catch (IOException e) {

           e.printStackTrace();

        }finally {

           //释放支援

           if(fw != null) {

               try {

                   //只要使用IO就必须要处理异常

                   //close会关闭输出流时会先清理缓冲区

                   fw.close();

                }catch (IOException e) {

                   e.printStackTrace();

               }

           }

        }

       

    }

 

}

 

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java输入输出是构建在基础输入输出之上的一个抽象概念,它提供了对输入输出操作的高级抽象,可以让程序员更加便捷的进行输入输出操作。Java输入输出提供了丰富的类,可以操作文件、网络、内存、设备等数据源,它们可以按照字节字符流的方式操作数据。 ### 回答2: Java 输入输出是用于在程序读取数据和写入数据的机制。在Java,输入输出是通过的方式来实现数据的读取和写入。 输入用于从外部获取数据,比如从键盘读取用户输入,或从文件读取数据。常见的输入有:System.in(标准输入,即键盘输入)、FileInputStream(文件输入,读取文件的数据)等。通过输入,可以将数据从外部输入到程序输出用于将程序的数据输出到外部,比如将数据输出到控制台、写入文件等。常见的输出有:System.out(标准输出,即控制台输出)、FileOutputStream(文件输出,将数据写入到文件)等。通过输出,可以将数据从程序输出到外部。 Java输入按照读取方式的不同可以分为字节字符流。字节使用字节(8位)为单位进行数据传输,适合处理二进制文件或者文本文件。常见的字节有:InputStream(字节输入)、FileInputStream(文件输入)等。字符流使用字符(16位)为单位进行数据传输,适合处理文本文件。常见的字符流有:Reader(字符输入)、FileReader(文件字符输入)等。 Java输出同样也按照写入方式的不同可以分为字节字符流。字节使用字节(8位)为单位进行数据传输,适合处理二进制文件或者文本文件。常见的字节有:OutputStream(字节输出)、FileOutputStream(文件输出)等。字符流使用字符(16位)为单位进行数据传输,适合处理文本文件。常见的字符流有:Writer(字符输出)、FileWriter(文件字符输出)等。 通过使用Java的输入输出,我们可以在程序灵活地读取外部数据和将程序数据输出到外部。这为我们处理各种类型的数据提供了方便和灵活性。同时,还需要注意在使用完输入输出后及时关闭资源,以避免资源泄露和占用。 ### 回答3: Java 的输入输出是在程序进行输入和输出操作的一种方式,用来实现与外部设备的数据传输。 Java 提供了两种常用的输入输出:字节字符流。字节以字节为单位进行输入输出字符流以字符为单位进行输入输出。字节适用于二进制文件的读写,如图像、音频等文件;字符流适用于文本文件的读写。 Java 的输入用来将外部数据读入程序输出用来将程序的数据输出到外部设备。 常见的字节输入有 InputStream 和其子类,如 FileInputStream,用于从文件读取字节数据;常见的字符输入有 Reader 和其子类,如 FileReader,用于从文件读取字符数据。 常见的字节输出有 OutputStream 和其子类,如 FileOutputStream,用于向文件写入字节数据;常见的字符输出有 Writer 和其子类,如 FileWriter,用于向文件写入字符数据。 使用输入输出的基本步骤是:创建输入输出对象,打开数据源或目标文件,根据需要进行读取或写入操作,关闭。 在读取或写入数据时,可以通过缓冲来提高效率。BufferedInputStream 和 BufferedOutputStream 是字节缓冲的实现类,BufferedReader 和 BufferedWriter 是字符缓冲的实现类。 除了文件输入输出外,Java 还提供了其他类型的输入输出,如网络输入输出和内存输入输出,用于不同的应用场景。 总之,Java 的输入输出是一种用于在程序进行数据读写的方式,提供了丰富的输入输出类和方法,能够满足不同的需求。熟练掌握输入输出的使用,对于开发Java应用程序是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值