博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK中个别类的介绍-IO读写(java.io.*)
阅读量:5092 次
发布时间:2019-06-13

本文共 1960 字,大约阅读时间需要 6 分钟。

一直以来对于java.io包中的Stream、writer/reader、Buffered*等较为混沌,现在理一理它们之间的关系。主要依据字符、字节字符:人可以看。字节:机器的编码,用于传输或读写硬盘上的数据。

字节的读写(Stream)

FileInputStream用于获得输入字节,可以读取诸如图像之类的原始字节流。

FileInputStream fileInputStream=new FileInputStream(File file);int read(byte[] b);//从输入流中将最多b.length个字节数据读入bint read(byte[] b, int off, int len)://最多len字节数据读入b,位置是从b的off处开始int skip(long n);//从输入流中跳过n字节。

FileOutputStream:文件输出流,将数据写入File。

 

 

FileOutputStream(File);void write(byte[] b);void write(byte[] b, int off, int len);

 

字符的读写

FileReader用于读取字符文件。

 

FileReader fileReader=new FileReader(File file);

FileWriter用于写入字符文件。

 

 

FileWriter fileWriter=new FileWriter(File file);

 

字节《=》字符转换

InputStreamReader:字节流=》字符流,可使用指定的Charset读取字节并解码为字符。

 

InputStreamReader(InputStream);InputStreamReader(InputStream,Charset);int read(char[],int offset,int length);

OutputStreamWriter:字符流=》字节流,可使用指定的Charset将要写入流中的字符编码成字节。

 

 

OutputStreamWriter(OutputStream);OutputStreamWriter(OutputStream out,Chaset);void write(char[] cbuf,int off,int len);

Reader/Writer的包装-提升性能

 

BufferedReader 从字符输入流中读取文本,缓冲各个字符,高效读取。api建议用它包装开销较高的FileReader和InputStreamReader。

 

BufferedReader(Reader in);BufferedReader bf1=new BufferedReader(new FileReader(""));BufferedReader bf2=new BufferedReader(new InputStreamReader());int read(char[] cbuf,int off, int len);String readLine();

BufferedWriter将文本写入字符输出流,缓冲各个字符。可用于包装开销很高的FileWriter,OutputStreamWriter。

BufferedWriter(Writer);BufferedWriter(new FileWriter(""));BufferedWriter(new OutputStreamWriter());void write(char[] cbuf,int off, int len);void write(String, int off, int len);

以上是依据 机器<->人 这样的流程来分析。下面看下类图:

 

       

           

OutputStream -> FileOutputStream -> BufferedOutputStream

InputStream -> FileInputStream -> BufferedInputStream
Writer -> FileWriter ->  BufferedWriter
Reader -> FileReader -> BufferedReader

Stream:字节流操作的超类,Reader/Writer:字符流操作的超类。BufferedInputStream/BufferedOutputStream/BufferedWriter/BufferedReader在上述IO操作上增加了缓冲,可以有效地提高文件I/O性能。

 

转载于:https://www.cnblogs.com/whuqin/archive/2011/08/18/4982061.html

你可能感兴趣的文章
读取properties配置文件的方法
查看>>
es6语法图片切换demo
查看>>
Spring基础系列-AOP源码分析
查看>>
XML1_XML基础
查看>>
结构体、共用体
查看>>
找到IIS服务
查看>>
命令行解决mysql中文乱码
查看>>
C#代码执行中等待10秒
查看>>
window下nodejs环境和express插件的安装
查看>>
leetcode刷题正则表达式
查看>>
杨辉三角模板
查看>>
通过 PackageManager 获得你想要的 App 信息
查看>>
楼市捞金术:我是怎么在9个月把房价炒高两三倍的
查看>>
下载文件
查看>>
131125 - 关于对“一次元”、“二次元”、“三次元”的兴趣变化的奇思妙想
查看>>
HDU 2136 Largest prime factor
查看>>
POJ 3360 H-Cow Contest
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
2019省赛训练组队赛4.11周四 2014浙江省赛
查看>>
HDU 2084 数塔
查看>>