JavaSE: FileWriter类 & FileReader类

FileWriter 类

1.  基本概念

    java.io.FileWriter类:用于将文本内容写入到文本文件

 

2.  常用的方法

                                 

<1>FileWriter(String fileName) 根据参数指定的文件名构造对象
<2>FileWriter(String fileName, boolean append) 以追加的方式,根据参数指定的文件名来构造对象
<3>void write(int c) 写入单个字符
<4>void write(char[] cbuf) 将cbuf.length个字符从指定字符数组写入此文件输出流中
<5>void flush() 刷新流
<6>void close() 关闭流对象并释放有关的资源

 

 

3.  代码示例

 

    class FileWriterTest{

      main(){

        //  选中代码后可以使用 ctrl + alt + t 来生成异常的捕获代码等

        FileWriter fw = null;

 

        try{

          //  1.  构造FileWrite类型的对象与d:/a.txt文件关联

                若文件不存在:该流回自动创建新的空文件

                若文件存在:该流会清空文件中的原有内容

          fw = new FileWriter("d:/a.txt");

          //  以追加的方式创建对象,去关联文件

          //  若文件不存在:自动创建新的空文件

          //  若文件存在:保留原有的数据内容

          //  fw = new FileWriter("d:/a.txt", true);

          //  2.  通过流对象写入数据内容,每当写入一个字符后,文件中的读写位置向后移动一位

          fw.write('a');

 

          //  准备一个字符数组

          char[] cArr = new char[]{'h','e','l','l','o'};

          //  将字符数组中的一部分内容,写入进去

          fw.write(cArr,1,3);  //  'e','l','l'  

          //  将整个字符数组写进去

          fw.write(cArr);  //  'h','e','l','l','o'

 

          //  刷新流

          fw.flush();

          println("写入数据成功!"); 

        }catch(IOException e){

          e.printStackTrace();

        }finally{

          //  3.  关闭流对象,并释放有关的资源

          if (null != fw) {

            try{

              fw.close();

            }catch (IOException e){

              e.printStackTrace();

            }

          }

        }

      }

    }

 

FileReader 类

1.  基本概念

    java.io.FileReader类:用于从文本文件读取文本数据内容

 

2.  常用的方法                    

<1>FileReader(String fileName) 根据参数指定的文件名构造对象
<2>int read() 读取单个字符的数据并返回,返回-1表示读取到末尾
<3>int read(char[] cbuf, int offset,int length) 从输入流中将最多len个字符的数据,读入一个字符数组中(从下标为offset的位置开始),并返回读取到的字符个数,返回-1表示读取到末尾
<4>int read(char[] cbuf)

从此输入流中,将最多cbuf.length 个字符的数据读入字符数组中,

返回读取到的字符个数,返回-1表示读取到末尾

<5>void close() 关闭流对象并释放有关的资源

 

3.  代码示例

      

    class FileReaderTest {

      main(){

        FileReader fr = null;

 

        try{

          //  1.  构造FileReader类型的对象,与d:/a.txt文件关联

          //  fr = new FileReader("d:/a.txt");

          fr = new FileReader("d:/b.txt");

          //  2.  获取数据内容并打印

          /*

            int res = fr.read();

            println("读取到的单个字符是:" + (char)res);  //  'a'

          */

          int res = 0;

          while( (res = fr.read()) != -1){

            println("读取到的单个字符是:" + (char)res + ",对应的编号是:" + res);

          }

 

          //  准备一个字符数组,来保存读取到的数据内容

          //  char[] cArr = new char[5];

          //  期望读满字符数组中的一部分空间,也就是,读取3个字符,放入数组cArr中,下标从1开始的位置上

          /* 

            int res = fr.read(cArr,1,3);

            println("实际读取到的字符个数是:" + res);  //  3

            for (char cv : cArr){

              println("读取到的单个字符是:" + (char)cv);  //  空 a e l 空

            }

          */

          //  期望读满整个字符数组

          /*

            int res = fr.read(cArr);

            println("实际读到的字符个数是:" + res);  //  5

            for (char cv : cArr) {

              println("读取到的单个字符是:" + (char)cv);  // a e l l h

            }

          */

        }catch (IOException e){

          e.printStackTrace();

        }finally{

          //  3.  关闭流对象并释放有关的资源

          if (null != fr){

            try{

              fr.close();

            } catch(IOException e){

              e.printStackTrace();

            }

          }

        }

      }

    }

 

4. FileReader 类 & FileWriter 类 代码示例

文件拷贝(两个文本文件) 

class FileCharCopyTest{

 

    main(){

      FileReader fr = null;

      FileWriter fw = null;

 

      try{

        //  1.  创建FileReader类型的对象,与d:/a.txt 文件关联

        fr = new FileReader("d:/a.txt");

        //  fr = new FileReader("d:/03 IO流的框架图.png");

        //  2.  创建FileWriter类型的对象,与d:/b.txt文件关联

        fw = new FileWriter("d:/b.txt");

        // fw = new FileWriter("d:/IO流的框架图.png");  拷贝图片文件失败!!!

        //  3.  不断地从输入流中,读取数据内容,并写入到输出流中

        println("正在玩命地拷贝...");

        int res = 0;

        while ( ((res = fr.read()) != -1) ) {

          fw.write(res);

        }

        println("文件拷贝成功!");

      }catch(IOException e){

        e.printStackTrace();

      }finally{

        //  4.  关闭流对象,并释放有关的资源

        if (null != fw){

          try{

            fw.close();

          } catch (IOException e){

            e.printStackTrace();

          }

        }

        

        if (null != fr){

          try{

            fr.close();

          } catch (IOException e){

            e.printStackTrace();

          }

        }

      }

    }

}

posted @ 2021-06-09 14:06  Jasper2003  阅读(105)  评论(0编辑  收藏  举报