zoukankan      html  css  js  c++  java
  • 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();

              }

            }

          }

        }

    }

  • 相关阅读:
    HOJ 2139 Spiderman's workout(动态规划)
    FZU 2107 Hua Rong Dao(dfs)
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 无向连通图最少包含多少条边
    Java 第十一届 蓝桥杯 省模拟赛 无向连通图最少包含多少条边
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14866634.html
Copyright © 2011-2022 走看看