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源码分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!