Java IO: Buffered和Data

转载自  Java IO: Buffered和Data

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

本小节会简要概括Java IO中Buffered和data的输入输出流,主要涉及以下4个类型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。

BufferedInputStream

原文链接

BufferedInputStream能为输入流提供缓冲区,能提高很多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

原文链接

DataInputStream可以使你从输入流中读取Java基本类型数据,而不必每次读取字节数据。你可以把InputStream包装到DataInputStream中,然后就可以从此输入流中读取基本类型数据了,代码如下:

DataInputStream input = new DataInputStream(new FileInputStream("binary.data"));int aByte = input.read();int anInt = input.readInt();float aFloat = input.readFloat();double aDouble = input.readDouble();//etc.input.close();

当你要读取的数据中包含了int,long,float,double这样的基本类型变量时,DataInputStream可以很方便地处理这些数据。

DataOutputStream

原文链接

DataOutputStream可以往输出流中写入Java基本类型数据,例子如下:

DataOutputStream output = new DataOutputStream(new FileOutputStream("binary.data"));output.write(45);//byte data output.writeInt(4545);//int data output.writeDouble(109.123);//double data  output.close();

其他方面与DataInputStream类似,不再赘述。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio Code 玩MS SQL

Connect 2016 有一堆好玩的东西,微软正在努力地转型,从Windows First到Cloud First 。Cloud First的缘故也推动了微软产品的跨平台,你可以看到Microsoft Office / Visual Studio Code / Visual Studio / PowerShell 都陆续登上了Linux/Mac 。…

java 单例 生命周期_单例模式--- 声明周期托管方式

声明周期托管方式,IOCJAVA代码MyManager.javaimport java.util.HashMap;/*** 为了管理对象的产生* 对象的控制权给当前类负责* 生命周期托管实现对象的单例* IOC控制反转*/public class MyManager {// 存储所有被管理的对象private static HashMap beanMap new Has…

Spring配置

Spring配置 别名 alias 设置别名 , 为bean设置别名 , 可以设置多个别名 <!--设置别名&#xff1a;在获取Bean的时候可以使用别名获取--> <alias name"userT" alias"userNew"/>Bean的配置 <!--bean就是java对象,由Spring创建和管理-->…

优化 Vue 项目编译文件大小

转载自 优化 Vue 项目编译文件大小与其说是优化 Vue&#xff0c;不如说主要是在 webpack 打包的配置中做些文章&#xff0c;使得 Vue 编译后的文件尽可能的小。以下介绍自己在项目中进行优化的过程&#xff0c;其中的内容也许并不适合于每个项目&#xff0c;但整体思路是差不多…

mybatis反向生成实体类、dao层以及映射文件

在做项目的时候&#xff0c;我们不得不写底层的一些繁琐代码&#xff0c;比如说实体类、dao层之类的&#xff0c;既浪费时间又费事&#xff0c;最主要的是还没效率&#xff0c;kuangkuangkuang的写半天终于写完了&#xff0c;到运行的时候dao层的代码居然还报错&#xff01;&am…

ASP.NET Core 1.1 简介

ASP.NET Core 1.1 于2016年11月16日发布。这个版本包括许多伟大的新功能以及许多错误修复和一般的增强。这个版本包含了多个新的中间件组件、针对Windows的WebListener服务器、Razor视图编译以及Azure相关的特性。要将现有项目更新到ASP.NET Core 1.1 &#xff0c;您需要执行以…

java 泛型参数的类型_Java获得泛型参数类型

在Android开发中&#xff0c;使用Gson将json字符串转换为Java对象尤为常见。在这个转换过程中&#xff0c;通常会结合泛型参数、接口或者抽象类来封装处理。T t new Gson().fromJson(response, type);那如何来获取type呢&#xff1f;接口实现public interface ICallback {void…

Mybatis传入参数类型为ListIntergert作为条件进行查询

Mybatis传入参数类型为List作为条件进行查询 higher2017关注 2017.02.07 10:23:16字数 130阅读 5,658 表结构&#xff1a; 表名称为constant 需求&#xff1a; 现在想查询type为2、3的所有数据&#xff08;甚至想查询type为1,2,3,4,5....,100的所有数据&#xff09;并且返回…

lombok进行有参无参构造出现的问题

查看方法 解决方法 运行成功

Java IO: ByteArray和Filter

转载自 Java IO: ByteArray和Filter 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 本小节会简要概括Java IO中字节数组与过滤器的输入输出流&#xff0c;主要涉及以下4个类型的流&#xff1a;ByteArrayInputStream&#xff0c;ByteArrayOutputStream&#xff0c;Fi…

JAVA List集合转Page(分页对象) java 分页 PageModel 测试类TestPagerModel

http://www.blogjava.net/jzone/archive/2015/06/05/308842.html?optadmin /** * version 1.0 * author: fwjia */ import java.util.List; public class PageModel<T> { /*** * 当前页 */ private int page 1; /*** * 总页数 */ public int totalPages 0; /*** * 每…

.NET应用迁移到.NET Core(三)从商业角度看移植过程

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下从商业角度看移植过程。 。 创建项目移植进度表 创建移植进度表时要考虑所有可能的风险&#xff0c;包括技术和商…

drawroundrect java_Canvas中drawRoundRect()方法介绍

画布Canvas的一个方法&#xff0c;绘制圆角矩形逛CSDN的时候&#xff0c;无意看到之前关注的一个博主&#xff0c;出了一本书《Android自定义控件》&#xff0c;以前学自定义控件的时候&#xff0c;就是看他的文章的&#xff0c;这次出书了&#xff0c;再加上当当做活动&#x…

Spring(笔记)

简介 Spring概述 简介 Spring : 春天 —>给软件行业带来了春天 2002年&#xff0c;Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日&#xff0c;Spring框架以interface21框架为基础&#xff0c;经过重新设计&#xff0c;发布了1.0正式版。 很难想象…

Java IO: PipedOutputStream

转载自 Java IO: PipedOutputStream 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedOutputStream可以往管道里写入读取字节流数据&#xff0c;代码如下&#xff1a; OutputStream output new PipedOutputStream(pipedInputStream);while(moreData) …

mybatis报错Type interface xxx.Dao is not known to the MapperRegistry

今天在做mybatis的时候&#xff0c;遇到一个错误&#xff0c;大家看看这个错误吧&#xff1a;org.apache.ibatis.binding.BindingException: Type interface cn.mybatis_chop10_1.dao.IEmpDao is not known to the MapperRegistry. 我前找找后找找&#xff0c;就是找不出来&…

Navicat Premium 11 12 闪退

卸载有道词典 重新安装 Navicat Premium 11

java弹弹球实验报告_Java弹球游戏实验报告—chen

Java弹球游戏实验报告—chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一、实验目的2 二、需求分析2 三、实验任务2 1、设计3 2、程序要求&#xff1a;3 3、选作题&#xff1a;3 四、开发工具与平台3 五、设计…

.NET应用迁移到.NET Core(二)风险评估

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的风险评估。 很多移植项目超出预算或未能按时完成&#xff0c;主要是因为没有很好地管理移植过程中可能…

Java IO: PipedInputStream

转载自 Java IO: PipedInputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedInputStream可以从管道中读取字节流数据&#xff0c;代码如下&#xff1a; InputStream input new PipedInputStream(pipedOutputStream); int data input.read(); …