• 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();

              }

            }

          }

        }

    }

  • 相关阅读:
    python读取数据写入excel
    English Study!
    ODOO里视图开发案例---定义一个像tree、form一样的视图
    更改gradle中央仓库,加快访问速度
    hadoop解决集群启动时某个slave的datanode挂掉问题
    ssh免密登录
    大数据集群脚本xcall和xsync
    虚拟机启动后黑屏并无法关闭
    快照与克隆的区别(来自转载)
    VMware12 打不开Centos6.8系统
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14866634.html
Copyright © 2020-2023  润新知