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

     运行结果,如下:

  • 相关阅读:
    判断整数是否为质数?
    汇编debug
    DOS命令 Net config server Net config workstation
    DecimalField的使用
    BiNGO的GO分析
    GO富集分析 信号通路
    Cytoscape软件简介
    git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
    note3
    基因id
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4868764.html
Copyright © 2011-2022 走看看