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)
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的更多相关文章
- Java IO(十七)FIleReader 和 FileWriter
Java IO(十七)FIleReader 和 FileWriter 一.介绍 FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader ...
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- java io系列
java io系列01之 "目录" java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream) java io系列03之 ...
- java io系列23之 BufferedReader(字符缓冲输入流)
转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_23.html 更多内容请参考:java io系列01之 "目录" Buffere ...
- java io系列12之 BufferedInputStream(缓冲输入流)的认知、源码和示例
本章内容包括3个部分:BufferedInputStream介绍,BufferedInputStream源码,以及BufferedInputStream使用示例. 转载请注明出处:http://www ...
- java io系列19之 CharArrayWriter(字符数组输出流)
本章,我们学习CharArrayWriter.学习时,我们先对CharArrayWriter有个大致了解,然后深入了解一下它的源码,最后通过示例来掌握它的用法. 转载请注明出处:http://www. ...
- java io系列24之 BufferedWriter(字符缓冲输出流)
转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_24.html 更多内容请参考:java io系列01之 "目录" Buffere ...
- java io系列16之 PrintStream(打印输出流)详解
本章介绍PrintStream以及 它与DataOutputStream的区别.我们先对PrintStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:htt ...
- java io系列06之 序列化总结(Serializable 和 Externalizable)
本章,我们对序列化进行深入的学习和探讨.学习内容,包括序列化的作用.用途.用法,以及对实现序列化的2种方式Serializable和Externalizable的深入研究. 转载请注明出处:http: ...
随机推荐
- BZOJ5417[Noi2018]你的名字——后缀自动机+线段树合并
题目链接: [Noi2018]你的名字 题目大意:给出一个字符串$S$及$q$次询问,每次询问一个字符串$T$有多少本质不同的子串不是$S[l,r]$的子串($S[l,r]$表示$S$串的第$l$个字 ...
- eolinker——分享项目只需两步
登陆后打开项目概况 然后进入到分享项目界面,可根据自己的需求进行设置
- Codeforces478D-Red-Green Towers-DP
不是特别难的一道dp题. 给r个红块,g个绿块,计算这些块能磊出的最高塔的方案数. 塔的每一层都比上一层多一块,每一层只能有一种颜色. dp[i][j]表示第i层,j个红块的方案数. 则dp[i][j ...
- HBase 清空表数据
public int clearTableByTableName(String tableName) throws Exception { logger.debug("======InitH ...
- WEB请求处理
https://blog.csdn.net/bpingchang/article/details/51328941
- python_sort(key=) 的使用
""" sort() 函数内含有 key 可以指定相关的函数来作为排序依据 比如这里指定每一项的索引为1 的元素作为排序依据 默认是以第一个作为排序依据 "&q ...
- ubuntu配置mysql
1.安装mysql: sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install ...
- js处理异步的几种方式
Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推) ...
- Get The Treasury HDU - 3642(体积扫描线)
给出n个立方体,要你求这些立方体至少被覆盖三次的部分. 先把这个立方体的信息存在来,发现Z的范围不大,z范围是是[-500,500],所以我们可以先离散化,然后枚举Z, 然后对于每一段Z的区域内,在当 ...
- Zabbix-proxy安装部署
原文链接:https://www.cnblogs.com/irockcode/p/6754659.html 环境: 因为公司需要监控远程客户机,但server端无法主动连接agent端,客户端可以连接 ...