zoukankan      html  css  js  c++  java
  • java io系列22之 FileReader和FileWriter


    FileReader 是用于读取字符流的类,它继承于InputStreamReader。要读取原始字节流,请考虑使用 FileInputStream。
    FileWriter 是用于写入字符流的类,它继承于OutputStreamWriter。要写入原始字节流,请考虑使用 FileOutputStream。

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_22.html

    更多内容请参考:java io系列01之 "目录"

    FileReader和FileWriter源码分析

    1. FileReader 源码(基于jdk1.7.40)

     1 package java.io;
     2 
     3 public class FileReader extends InputStreamReader {
     4 
     5     public FileReader(String fileName) throws FileNotFoundException {
     6         super(new FileInputStream(fil java io系列21之 InputStreamReader和OutputStreamWritereName));
     7     }
     8 
     9     public FileReader(File file) throws FileNotFoundException {
    10         super(new FileInputStream(file));
    11     }
    12 
    13     public FileReader(FileDescriptor fd) {
    14         super(new FileInputStream(fd));
    15     }
    16 }
    View Code

    从中,我们可以看出FileReader是基于InputStreamReader实现的。 

    2. FileWriter 源码(基于jdk1.7.40)

     1 package java.io;
     2 
     3 public class FileWriter extends OutputStreamWriter {
     4 
     5     public FileWriter(String fileName) throws IOException {
     6         super(new FileOutputStream(fileName));
     7     }
     8 
     9     public FileWriter(String fileName, boolean append) throws IOException {
    10         super(new FileOutputStream(fileName, append));
    11     }
    12 
    13     public FileWriter(File file) throws IOException {
    14         super(new FileOutputStream(file));
    15     }
    16 
    17     public FileWriter(File file, boolean append) throws IOException {
    18         super(new FileOutputStream(file, append));
    19     }
    20 
    21     public FileWriter(FileDescriptor fd) {
    22         super(new FileOutputStream(fd));
    23     }
    24 }
    View Code

    从中,我们可以看出FileWriter是基于OutputStreamWriter实现的。


    示例程序

     1 import java.io.File;
     2 import java.io.FileInputStream;
     3 import java.io.FileOutputStream;
     4 import java.io.FileWriter;;
     5 import java.io.FileReader;
     6 import java.io.IOException;
     7 
     8 /**
     9  * FileReader 和 FileWriter 测试程序
    10  *
    11  * @author skywang
    12  */
    13 public class FileReaderWriterTest {
    14 
    15     private static final String FileName = "file.txt";
    16     private static final String CharsetName = "utf-8";
    17 
    18     public static void main(String[] args) {
    19         testWrite();
    20         testRead();
    21     }
    22 
    23     /**
    24      * OutputStreamWriter 演示函数
    25      *
    26      */
    27     private static void testWrite() {
    28         try {
    29             // 创建文件“file.txt”对应File对象
    30             File file = new File(FileName);
    31             // 创建FileOutputStream对应FileWriter:将字节流转换为字符流,即写入out1的数据会自动由字节转换为字符。
    32             FileWriter out1 = new FileWriter(file);
    33             // 写入10个汉字
    34             out1.write("字节流转为字符流示例");
    35             // 向“文件中”写入"0123456789"+换行符
    36             out1.write("0123456789
    ");
    37 
    38             out1.close();
    39 
    40         } catch(IOException e) {
    41             e.printStackTrace();
    42         }
    43     }
    44 
    45     /**
    46      * InputStreamReader 演示程序
    47      */
    48     private static void testRead() {
    49         try {
    50             // 方法1:新建FileInputStream对象
    51             // 新建文件“file.txt”对应File对象
    52             File file = new File(FileName);
    53             FileReader in1 = new FileReader(file);
    54 
    55             // 测试read(),从中读取一个字符
    56             char c1 = (char)in1.read();
    57             System.out.println("c1="+c1);
    58 
    59             // 测试skip(long byteCount),跳过4个字符
    60             in1.skip(6);
    61 
    62             // 测试read(char[] cbuf, int off, int len)
    63             char[] buf = new char[10];
    64             in1.read(buf, 0, buf.length);
    65             System.out.println("buf="+(new String(buf)));
    66 
    67             in1.close();
    68         } catch(IOException e) {
    69             e.printStackTrace();
    70         }
    71     }
    72 }
    View Code

    运行结果
    c1=字
    buf=流示例0123456

  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/skywang12345/p/io_22.html
Copyright © 2011-2022 走看看