Java IO: Buffered和Data
本小节会简要概括Java IO中Buffered和data的输入输出流,主要涉及以下4个类型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。
BufferedInputStream
原文链接
BufferedInputStream能为输入流提供缓冲区,能提高很多IO的速度。你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节。特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多。
为了给你的输入流加上缓冲,你需要把输入流包装到BufferedInputStream中,代码如下:
1
|
InputStream input = new BufferedInputStream( new FileInputStream( "c:\\data\\input-file.txt" ));
|
很简单,不是吗?你可以给BufferedInputStream的构造函数传递一个值,设置内部使用的缓冲区设置大小(译者注:默认缓冲区大小8 * 1024B),就像这样:
1
|
InputStream input = new BufferedInputStream( new FileInputStream( "c:\\data\\input-file.txt" ), 8 * 1024 );
|
这个例子设置了8KB的缓冲区。最好把缓冲区大小设置成1024字节的整数倍,这样能更高效地利用内置缓冲区的磁盘。
除了能够为输入流提供缓冲区以外,其余方面BufferedInputStream基本与InputStream类似。
BufferedOutputStream
原文链接
与BufferedInputStream类似,BufferedOutputStream可以为输出流提供缓冲区。可以构造一个使用默认大小缓冲区的BufferedOutputStream(译者注:默认缓冲区大小8 * 1024B),代码如下:
1
|
OutputStream output = new BufferedOutputStream( new FileOutputStream( "c:\\data\\output-file.txt" ));
|
也可以手动设置缓冲区大小,代码如下:
1
|
OutputStream output = new BufferedOutputStream( new FileOutputStream( "c:\\data\\output-file.txt" ), 8 * 1024 );
|
为了更好地使用内置缓冲区的磁盘,同样建议把缓冲区大小设置成1024的整数倍。
除了能够为输出流提供缓冲区以外,其余方面BufferedOutputStream基本与OutputStream类似。唯一不同的时,你需要手动flush()方法确保写入到此输出流的数据真正写入到磁盘或者网络中。
DataInputStream
原文链接
DataInputStream可以使你从输入流中读取Java基本类型数据,而不必每次读取字节数据。你可以把InputStream包装到DataInputStream中,然后就可以从此输入流中读取基本类型数据了,代码如下:
01
|
DataInputStream input = new DataInputStream( new FileInputStream( "binary.data" ));
|
02
|
03
|
int aByte = input.read();
|
04
|
05
|
int anInt = input.readInt();
|
06
|
07
|
float aFloat = input.readFloat();
|
08
|
09
|
double aDouble = input.readDouble(); //etc.
|
10
|
11
|
input.close();
|
当你要读取的数据中包含了int,long,float,double这样的基本类型变量时,DataInputStream可以很方便地处理这些数据。
DataOutputStream
原文链接
DataOutputStream可以往输出流中写入Java基本类型数据,例子如下:
1
|
DataOutputStream output = new DataOutputStream( new FileOutputStream( "binary.data" ));
|
2
|
3
|
output.write( 45 );
|
4
|
5
|
//byte data output.writeInt(4545);
|
6
|
7
|
//int data output.writeDouble(109.123);
|
8
|
9
|
//double data output.close();
|
其他方面与DataInputStream类似,不再赘述。
- 转载自 并发编程网 - ifeve.com
Java IO: Buffered和Data相关推荐
- 安装好hadoop集群后,报错如下n org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /data/hadoop-roo
master错误: n org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /data/hadoop-root-namen ...
- java.io.IOException: Response data error, expect Throwable, but get null
报错 2020-11-19 19:58:20.418 WARN 28783 --- [NettyClientWorker-4-2] o.a.d.r.p.d.DecodeableRpcResult 11 ...
- Java IO: 字符流的Buffered和Filter
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...
- nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...
一.前言 通过ojdbc14.jar连接oracle数据库,应用运行期间报出"java.sql.SQLException: Io 异常: Size Data Unit (SDU) misma ...
- java.io.IOException: output.properties data exceeds its limit [2048] hue的调度
java.io.IOException: output.properties data exceeds its limit [2048] hue的调度问题 添加配置 输出大小默认是2048,在ooz ...
- java加载自定义字体java.io.IOException: Problem reading font data.
异常信息 load font error:{} java.io.IOException: Problem reading font data.at java.awt.Font.createFont0( ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
- Java基础17:Java IO流总结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/80201802 这位大侠,这是我的公众号:程序员江湖 ...
最新文章
- 你知道吗?Linux命令竟如此简单!
- 微信二次修改微信号_如何二次修改微信号?简单易懂教程
- 软件开发依据的标准或法律法规_第178篇丨直真科技:官宣!定制软件开发不应该采用完工百分比法确认收入...
- springboot配置jasypt实现对配置文件敏感信息加密全流程详解
- oracle12C要求aix系统版本,Oracle 12c RAC for AIX7.1(三)系统参数
- Java垃圾回收日志解析
- [Leedcode][第十题][剑指offer]面试题第[19]题[正则表达式][动态规划][递归][JAVA]
- 最新深度学习文本分类模型汇总(github开源)
- org.hibernate.NonUniqueObjectException:
- Visual Studio Tip 之 如何查看隐形的空格(white space)和制表符(tab)
- linux系统常见的压缩命令,Linux 系统常见的压缩指令
- matlab中低通滤波器的用法,matlab中低通滤波器
- android 5.1一键root工具箱,一键root大师
- 流畅的 Python
- 50个程序员必须知道的网站,你知道么
- js计算当月有几周并显示对应的日期
- spice-gtk-0.35源代码解析之spicy解析
- 回环接口(loopback)
- uva 672 Gangsters( dp )
- mysql怎么创建和调用out参数的存储过程
热门文章
- python爬虫正则表达式实例-Python 正则表达式爬虫使用案例解析
- python循环语句-python基础-循环语句(5)
- python的用途实例-三个实例带你了解生成器的作用
- python培训比较好的机构-上海有哪些可以系统学习python的培训机构?
- Python的日志模块logging的使用
- matlab溢出的标志inf,关于C#:溢出与信息
- spring中environment设计与实现
- UVa1344 - Tian Ji -- The Horse Racing(贪心)
- MySQL:创建、修改和删除表
- 《NodeJS开发指南》第五章微博实例开发总结