欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 中的FileReader和FileWriter源码分析_动力节点Java学院整理

程序员文章站 2024-02-23 09:25:34
filereader和filewriter源码分析 1. filereader 源码(基于jdk1.7.40) package java.io; p...

filereader和filewriter源码分析

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

  package java.io;
 public class filereader extends inputstreamreader {
   public filereader(string filename) throws filenotfoundexception {
     super(new fileinputstream(fil java io系列21之 inputstreamreader和outputstreamwriterename));
   }
   public filereader(file file) throws filenotfoundexception {
     super(new fileinputstream(file));
   }
   public filereader(filedescriptor fd) {
     super(new fileinputstream(fd));
   }
 }

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

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

 package java.io;
 public class filewriter extends outputstreamwriter {
   public filewriter(string filename) throws ioexception {
     super(new fileoutputstream(filename));
   }
   public filewriter(string filename, boolean append) throws ioexception {
     super(new fileoutputstream(filename, append));
   }
   public filewriter(file file) throws ioexception {
     super(new fileoutputstream(file));
   }
   public filewriter(file file, boolean append) throws ioexception {
     super(new fileoutputstream(file, append));
   }
   public filewriter(filedescriptor fd) {
     super(new fileoutputstream(fd));
   }
 } 

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

示例程序 

import java.io.file;
 import java.io.fileinputstream;
 import java.io.fileoutputstream;
 import java.io.filewriter;;
 import java.io.filereader;
 import java.io.ioexception;
 /**
  * filereader 和 filewriter 测试程序
 *
 * 
 */
 public class filereaderwritertest {
   private static final string filename = "file.txt";
   private static final string charsetname = "utf-8";
   public static void main(string[] args) {
     testwrite();
     testread();
   }
   /**
   * outputstreamwriter 演示函数
   *
   */
   private static void testwrite() {
     try {
       // 创建文件“file.txt”对应file对象
       file file = new file(filename);
       // 创建fileoutputstream对应filewriter:将字节流转换为字符流,即写入out的数据会自动由字节转换为字符。
       filewriter out = new filewriter(file);
      // 写入10个汉字
       out1.write("字节流转为字符流示例");
      // 向“文件中”写入"0123456789"+换行符
      out1.write("0123456789\n");
      out1.close();
     } catch(ioexception e) {
       e.printstacktrace();
     }
   }
   /**
   * inputstreamreader 演示程序
   */
   private static void testread() {
     try {
      // 方法1:新建fileinputstream对象
       // 新建文件“file.txt”对应file对象
       file file = new file(filename);
       filereader in1 = new filereader(file);
       // 测试read(),从中读取一个字符
      char c1 = (char)in1.read();
       system.out.println("c1="+c1);
       // 测试skip(long bytecount),跳过4个字符
       in1.skip(6);
       // 测试read(char[] cbuf, int off, int len)
       char[] buf = new char[10];
       in1.read(buf, 0, buf.length);
       system.out.println("buf="+(new string(buf)));
       in.close();
     } catch(ioexception e) {
       e.printstacktrace();
     }
   }
 }

运行结果:

c1=字
buf=流示例0123456

以上所述是小编给大家介绍的java 中的filereader和filewriter源码分析,希望对大家有所帮助