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)

 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 测试程序
*
* @author skywang
*/
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:将字节流转换为字符流,即写入out1的数据会自动由字节转换为字符。
FileWriter out1 = 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))); in1.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}

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

java io系列22之 FileReader和FileWriter的更多相关文章

  1. Java IO(十七)FIleReader 和 FileWriter

    Java IO(十七)FIleReader 和 FileWriter 一.介绍 FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader ...

  2. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  3. java io系列

    java io系列01之 "目录" java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream) java io系列03之 ...

  4. java io系列23之 BufferedReader(字符缓冲输入流)

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_23.html 更多内容请参考:java io系列01之 "目录" Buffere ...

  5. java io系列12之 BufferedInputStream(缓冲输入流)的认知、源码和示例

    本章内容包括3个部分:BufferedInputStream介绍,BufferedInputStream源码,以及BufferedInputStream使用示例. 转载请注明出处:http://www ...

  6. java io系列19之 CharArrayWriter(字符数组输出流)

    本章,我们学习CharArrayWriter.学习时,我们先对CharArrayWriter有个大致了解,然后深入了解一下它的源码,最后通过示例来掌握它的用法. 转载请注明出处:http://www. ...

  7. java io系列24之 BufferedWriter(字符缓冲输出流)

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_24.html 更多内容请参考:java io系列01之 "目录" Buffere ...

  8. java io系列16之 PrintStream(打印输出流)详解

    本章介绍PrintStream以及 它与DataOutputStream的区别.我们先对PrintStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:htt ...

  9. java io系列06之 序列化总结(Serializable 和 Externalizable)

    本章,我们对序列化进行深入的学习和探讨.学习内容,包括序列化的作用.用途.用法,以及对实现序列化的2种方式Serializable和Externalizable的深入研究. 转载请注明出处:http: ...

随机推荐

  1. windows 下 mysql服务的注册和删除

    注册: mysqld --install 服务名 --defaults-file="C:\Mysql\mysql-5.7\my.ini" 删除 sc delete 服务名 停止服务 ...

  2. 【BZOJ1211】【HNOI2004】树的计数 prufer序列

    题目描述 给你\(n\)和\(n\)个点的度数,问你有多少个满足度数要求的生成树. 无解输出\(0\).保证答案不超过\({10}^{17}\). \(n\leq 150\) 题解 考虑prufer序 ...

  3. HDOJ5551 Huatuo's Medicine

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5551 题目大意:... 题目思路:乱搞?模拟? #include <stdio.h> vo ...

  4. GitHub Desktop 出现“please upgrade your plan to create a new private repository”的解决办法

    转:https://blog.csdn.net/qq_38584262/article/details/82386805 解决办法:去掉最下面的勾

  5. while(~scanf(..))为什么可以这样写

    因为读到文件的结束符时,scanf返回值是EOF,也就是-1,而~(-1)的作用就是对-1的按位取反. 在计算机中,数字按补码存储,正数的补码和原码一样,负数的补码是其反码+1,反码也就是符号位仍为1 ...

  6. Linux 日志分析脚本

    #### 以下代码,若出现无法使用,请根据底下图片,更改参数.根据 apache 日志格式修改 查看 apache 进程ps aux | grep httpd | grep -v grep | wc ...

  7. Leetcode 209.长度最小的子数组 By Python

    给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums = [2, ...

  8. hexo+next主题目录解析

    默认目录结构: . ├── .deploy ├── public ├── scaffolds ├── scripts ├── source | ├── _drafts | └── _posts ├── ...

  9. [2017-8-02]Android Learning Day8

    自定义动画效果 新建一个customAnim类 package com.liwenchi.myapplication; import android.view.animation.Animation; ...

  10. CSS之2D转换模块

    CSS 2D转换模块 transform 参考W3手册 transform 属性向元素应用从2D 或3D转换.该属性允许我们对元素进行旋转.缩放.移动或者倾斜. 格式: transform: none ...