Java 中的FileReader和FileWriter源码分析_动力节点Java学院整理
FileReader和FileWriter源码分析
1.FileReader源码(基于jdk1.7.40)
packagejava.io;
publicclassFileReaderextendsInputStreamReader{
publicFileReader(StringfileName)throwsFileNotFoundException{
super(newFileInputStream(filjavaio系列21之InputStreamReader和OutputStreamWritereName));
}
publicFileReader(Filefile)throwsFileNotFoundException{
super(newFileInputStream(file));
}
publicFileReader(FileDescriptorfd){
super(newFileInputStream(fd));
}
}
从中,我们可以看出FileReader是基于InputStreamReader实现的。
2.FileWriter源码(基于jdk1.7.40)
packagejava.io;
publicclassFileWriterextendsOutputStreamWriter{
publicFileWriter(StringfileName)throwsIOException{
super(newFileOutputStream(fileName));
}
publicFileWriter(StringfileName,booleanappend)throwsIOException{
super(newFileOutputStream(fileName,append));
}
publicFileWriter(Filefile)throwsIOException{
super(newFileOutputStream(file));
}
publicFileWriter(Filefile,booleanappend)throwsIOException{
super(newFileOutputStream(file,append));
}
publicFileWriter(FileDescriptorfd){
super(newFileOutputStream(fd));
}
}
从中,我们可以看出FileWriter是基于OutputStreamWriter实现的。
示例程序
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.FileWriter;;
importjava.io.FileReader;
importjava.io.IOException;
/**
*FileReader和FileWriter测试程序
*
*
*/
publicclassFileReaderWriterTest{
privatestaticfinalStringFileName="file.txt";
privatestaticfinalStringCharsetName="utf-8";
publicstaticvoidmain(String[]args){
testWrite();
testRead();
}
/**
*OutputStreamWriter演示函数
*
*/
privatestaticvoidtestWrite(){
try{
//创建文件“file.txt”对应File对象
Filefile=newFile(FileName);
//创建FileOutputStream对应FileWriter:将字节流转换为字符流,即写入out的数据会自动由字节转换为字符。
FileWriterout=newFileWriter(file);
//写入10个汉字
out1.write("字节流转为字符流示例");
//向“文件中”写入"0123456789"+换行符
out1.write("0123456789\n");
out1.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
/**
*InputStreamReader演示程序
*/
privatestaticvoidtestRead(){
try{
//方法1:新建FileInputStream对象
//新建文件“file.txt”对应File对象
Filefile=newFile(FileName);
FileReaderin1=newFileReader(file);
//测试read(),从中读取一个字符
charc1=(char)in1.read();
System.out.println("c1="+c1);
//测试skip(longbyteCount),跳过4个字符
in1.skip(6);
//测试read(char[]cbuf,intoff,intlen)
char[]buf=newchar[10];
in1.read(buf,0,buf.length);
System.out.println("buf="+(newString(buf)));
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
运行结果:
c1=字
buf=流示例0123456
以上所述是小编给大家介绍的Java中的FileReader和FileWriter源码分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!