• Java基础知识强化之IO流笔记37:FileReader/FileWriter(转换流的子类)复制文本文件案例


    1. 转换流的简化写法:

    由于我们常见的操作都是使用本地默认编码,所以,不用指定编码。
    而转换流的名称有点长,所以,Java就提供了其子类供我们使用:FileReader FileWriter
    OutputStreamWriter = FileOutputStream + 编码表(GBK)
    FileWriter = FileOutputStream + 编码表(GBK)

    InputStreamReader = FileInputStream + 编码表(GBK)
    FileReader = FileInputStream + 编码表(GBK)

    2.  FileReader / FileWriter两者的构造方法:

    (1)FileReader的构造方法

    构造方法摘要
    FileReader(File file)
              在给定从中读取数据的 File 的情况下创建一个新 FileReader
    FileReader(FileDescriptor fd)
              在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader
    FileReader(String fileName)
              在给定从中读取数据的文件名的情况下创建一个新 FileReader

    (2)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 对象。


    3. 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中

     数据源:
       a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader
     目的地:
       b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter

    4. 代码示例:

     1 package cn.itcast_04;
     2 
     3 import java.io.FileReader;
     4 import java.io.FileWriter;
     5 import java.io.IOException;
     6 
     7 /*
     8  * 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中
     9  * 
    10  * 数据源:
    11  *         a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader
    12  * 目的地:
    13  *         b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter
    14  */
    15 public class CopyFileDemo2 {
    16     public static void main(String[] args) throws IOException {
    17         // 封装数据源
    18         FileReader fr = new FileReader("a.txt");
    19         // 封装目的地
    20         FileWriter fw = new FileWriter("b.txt");
    21 
    22         // 一次一个字符
    23         // int ch = 0;
    24         // while ((ch = fr.read()) != -1) {
    25         // fw.write(ch);
    26         // }
    27 
    28         // 一次一个字符数组
    29         char[] chs = new char[1024];
    30         int len = 0;
    31         while ((len = fr.read(chs)) != -1) {
    32             fw.write(chs, 0, len);
    33             fw.flush();
    34         }
    35 
    36         // 释放资源
    37         fw.close();
    38         fr.close();
    39     }
    40 }

     运行结果,如下:

  • 相关阅读:
    DNS放大攻击
    Java并发编程(四):并发容器(转)
    关注商业价值
    样式小记
    应用程序优化
    查看当前的连接和锁
    重命名你的数据库
    转:对XML插入操作
    对数据的分页再一次思考
    不浪费自己的时间,同时也不浪费别人的时间
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4868764.html
Copyright © 2020-2023  润新知