• Java IO: Buffered和Data


    作者:Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com)

    本小节会简要概括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

  • 相关阅读:
    SQLyog 使用笔记,自增主键数据冲突错误
    扫一扫的意义
    js 加法运算
    linux crontab执行shell脚本中包含相对路径的问题
    Nginx笔记总结十二:nginx版本号隐藏
    Nginx笔记总结十一:Nginx重写规则指南
    Nginx笔记总结十:Nginx日志切割
    Nginx笔记总结九:Nginx日志配置
    Nginx笔记总结八:ngx_http_core_module模块中的变量
    Nginx笔记总结七:root和alias文件路径配置
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323933.html
Copyright © 2020-2023  润新知