Java IO: Buffered和Data
本小节会简要概括Java IO中Buffered和data的输入输出流,主要涉及以下4个类型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。
BufferedInputStreamBufferedInputStream能为输入流提供缓冲区,能提高很多IO的速度。你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节。特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多。
为了给你的输入流加上缓冲,你需要把输入流包装到BufferedInputStream中,代码如下:
InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\input-file.txt"));
很简单,不是吗?你可以给BufferedInputStream的构造函数传递一个值,设置内部使用的缓冲区设置大小(译者注:默认缓冲区大小8 * 1024B),就像这样:
InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\input-file.txt"), 8 * 1024);
这个例子设置了8KB的缓冲区。最好把缓冲区大小设置成1024字节的整数倍,这样能更高效地利用内置缓冲区的磁盘。
除了能够为输入流提供缓冲区以外,其余方面BufferedInputStream基本与InputStream类似。
BufferedOutputStream与BufferedInputStream类似,BufferedOutputStream可以为输出流提供缓冲区。可以构造一个使用默认大小缓冲区的BufferedOutputStream(译者注:默认缓冲区大小8 * 1024B),代码如下:
OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\output-file.txt"));
OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\output-file.txt"), 8 * 1024);
为了更好地使用内置缓冲区的磁盘,同样建议把缓冲区大小设置成1024的整数倍。
除了能够为输出流提供缓冲区以外,其余方面BufferedOutputStream基本与OutputStream类似。唯一不同的时,你需要手动flush()方法确保写入到此输出流的数据真正写入到磁盘或者网络中。
DataInputStream可以使你从输入流中读取Java基本类型数据,而不必每次读取字节数据。你可以把InputStream包装到DataInputStream中,然后就可以从此输入流中读取基本类型数据了,代码如下:
当你要读取的数据中包含了int,long,float,double这样的基本类型变量时,DataInputStream可以很方便地处理这些数据。
DataOutputStreamDataOutputStream可以往输出流中写入Java基本类型数据,例子如下:
【Java文件操作】手把手教你拿捏IO 流 哈喽,大家好~我是保护小周ღ,本期为大家带来的是 Java 文件操作,理解文件的概念以及,常用的操作文件的类和方法,FileInputStream 类 和 FileOutputStream , PrintWriter and Scnner, Reader and Wirter 确定不来看看嘛~ 更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
java面试题(十一)IO流篇 3.1 介绍一下Java中的IO流 IO(Input Output)用于实现对数据的输入与输出操作,Java把不同的输入/输出源(键盘、文件、网络等)抽象表述为流(Stream)。流是从起源到接收的有序数据,有了它程序就可以采用同一方式访问不同的输入/输出源。 ● 按照数据流向,可以将流分为输入流和输出流,其中输入流只能读取数据、不能写入数据,而输出流只能写入数据、不能读取数据。 ● 按照数据类型,可以将流分为字节流和字符流,其中字节流操作的数据单元是8位的字节,而字符流操作的数据单元是16位的字符。 ● 按照处理功能,可以将流分为节点流和处理流,其中节点流可以直接从/向一个特定的I
相关文章
- Java 基本的IO流
- java -version 问题 : C:ProgramDataOracleJavajavapath;
- Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
- java 中什么是aop
- Java实现 LeetCode 154 寻找旋转排序数组中的最小值 II(二)
- java实现第七届蓝桥杯棋子换位
- java实现猜算式
- java算法集训结果填空题练习2
- Java实现寻找最小的k个数
- java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式
- 图解 Java IO : 二、FilenameFilter源码
- 【JAVA】java中char类型数组用数组名打印结果不是地址值而是数组内容
- 【JAVA】java中split以"." 、""、“|”分隔字符串
- JbpmUtil.java
- Java虚拟机学习(1):体系结构 内存模型
- Java实现递增数组的二分查找
- 【JAVA】java中split以"." 、""、“|”分隔字符串
- Java IO模型--BIO、NIO Single Thread、NIO Reactor、AIO单线程及多线程AIO
- 使用Java程序通过http post访问Application server
- paip.java c# .net php python调用c++ c dll so windows api 总结
- 华为OD机试 - 新员工座位(Java & JS & Python)
- 【java】Java教程
- Java 关于java.util.LinkedHashMap cannot be cast to 实体类问题答案
- 解决办法:main ERROR FileManager (jmeter.log) java.io.FileNotFoundException: jmeter.log (拒绝访问)
- Java开发之高并发必备篇(六)——Lock和ReentrantLock
- Java 抽象类
- JAVA之IO流
- java.io.File详解
- Android kotlin 编译的报错提示:java.io.FileNotFoundException: db/xxx.db
- JAVA开发讲义(二)-Java程序设计之数据之谜二