图学java基础篇之IO

java io体系

20151106p1.png
如图可以看出,java的io按照包来划分的话可以分为三大块:io、nio、aio,但是从使用角度来看,这三块其实揉杂在一起的,下边我们先来概述下这三块:

  • io:主要包含字符流和字节流,我们常用的文件读写,流处理等都要用到,也是本次介绍的重点。jdk1.7之后的io底层部分类经已改为使用阻塞的nio实现了
  • nio:jdk1.4后加入,多路非阻塞(多路IO复用模型),此外还实现了buffer、channel、selector、内存映射文件等实现。我们直接使用nio多数情况用于网路编程。
  • aio:jdk1.7支持,又叫做nio2,实现了异步非阻塞io。较nio更高效,也主要用于网络编程。

由于本次主要介绍java基本的io类结构,io类的实现相对简单(主要是字节或者字符数组的操作),而nio和aio更多时候我们关注的是网络编程,要想理解需要对unix网络模型、异步和阻塞等有比较清晰的理解,因此并不会花大量篇幅介绍各个类,示例也仅会给出链接。
快写完的时候看到的一篇,写的赞,果然水平还差的远:深入分析 Java I/O 的工作机制

io类结构

20151208p2.png
常用的类不在介绍,下边主要介绍一些有特殊功能的类

PipedWriter,PipedReader

管道输入流,熟悉linux系统应该看到pipe应该就明白了,可以实现线程间通信,需要和PipedReader配套使用。详解和示例

FilterReader,FilterWriter

根据名字也能看出来,目的事项实现一个流过滤器,但是你会发现其实是个抽象类,并没有实现,这里只是提供了接口。扫了一下发现jdk里边只有Utility的一个JavaWriter的静态类实现了,其功能是将字节转换成有效的java字符。

CharArrayReader,CharArrayWriter

将字节数组作为输入或输出流处理,一般作为中间值,用来将字符数组和其他IO字符处理类转换。下边的ByteArrayInputStream与此类似,不过处理的是字节数组。详解和示例

PushbackReader,PushbackInputStream

具有回推功能的IO处理类,可以将已读取过的数据再回推到缓冲区中,重复读取(注意一般的流都是单向的,一旦读取出来就不能再读了)。详解和示例

DataInputStream,DataOutputStream

提供了按照类型或编码读取写入文件的方法,如byte[]、int、short、char、byte、UTF等类型或编码的读写。详解和示例

SequenceInputStream

如其名字:顺序输入流,改类允许将多个输入流作为输入,并按照顺序处理多个流,使用的时候当做一个流处理。详解和示例

RandomAccessFile

该类与其他IO类有较大不同,其支持随机读写,对于格式化的记录文件读取很有优势。此外由于其底层的操作已经改为由nio的FileChannel实现,因此在处理大文件的时候经常使用RandomAccessFile和MappedByteBuffer来读取,不仅读取速度更快,而且能够避免文件过大导致内存溢出。详解和示例

其他参考博文(侵删)
  • https://www.ibm.com/developerworks/cn/java/j-lo-javaio/
  • http://www.cnblogs.com/kuangdaoyizhimei/p/4034232.html
  • http://www.cnblogs.com/kuangdaoyizhimei/p/4035611.html

nio和aio相关

20151107p1.png
上图是整理的nio与aio的一些关键点,瞟一眼就好,详细的nio讲解可参考: Java NIO使用及原理分析

转载于:https://www.cnblogs.com/good-temper/p/4947090.html

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

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

相关文章

boot界面上下键调节键不能动_为什么电脑一开机就自动进入BIOS界面

电脑故障的问题表现形式很多,比如说为什么电脑蓝屏,为什么电脑一开机就自动进入BIOS界面等。这些问题往往另很多网友不知所措。今天小编就针对电脑一开机就自动进入BIOS界面的问题,教下大家具体的解决方法。1、你的BIOS电池没有电了。解决方法…

句子相似度--余弦相似度算法的实现

1、余弦相似度余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。 上图两…

红帽436——HA高可用集群之概念篇

一、集群概念:集群:提高性能,降低成本,提高可扩展性,增强可靠性,任务调度室集群中的核心技术。集群作用:保证业务不断 集群三种网络:业务网络,集群网络,存储网络 二、集群三种类型:…

按季度分类汇总_2019年纯碱行业相关上市公司季报 与半年报情况汇总

2019年纯碱行业相关上市公司季报与半年报情况汇总经百川盈孚统计,目前纯碱行业相关上市公司共计11家(包含三家ST股),已经全部公布2019年一季度报告。2019年上半年度报告仅五家公司公布,其中包含:大连大化、山东海化、华昌化工、湖…

sapmto生产模式配置及操作详解_硬岩制砂线怎么设计?300t/h的生产流程与设备配置详解...

点击上方“蓝字”关注我们说到硬岩,花岗岩、辉绿岩都不陌生,关于花岗岩的生产线配置小编曾介绍过,感兴趣的可直接点阅:《硬质岩破碎很发愁?从原料到成品,看花岗岩的破碎制砂生产线配置》《年产300万t花岗岩…

公交卡软件测试思路,中国移动NFC专用SIM卡测试过程介绍

近期,通讯运营商在NFC的应用领域迈出了一大步,消费者在北京乘坐地铁、公交以及其他支持市政一卡通消费的场所均可进行手机支付。接下来就从办卡开始,为大家详细介绍一下中国移动NFC手机钱包的实测过程。办理手机NFC支付业务想要刷手机消费除了…

青年教师大讲堂 计算机,浙海大青年教师大讲堂之船机学院“知识改变命运”...

原标题:浙海大青年教师大讲堂之船机学院“知识改变命运”10月28日上午,由校团委主办,船舶与机电工程学院团委承办的青年博士教师大讲堂系列活动之“知识改变命运”在长峙校区杨存国一号报告厅举行。本次讲座由船舶与机电工程学院青年博士石学…

深入浅出分布式文件系统MogileFS集群

一,简介 MogileFS是一款开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前MogileFS的日益成熟使用此解决方法的公司越来越多,例如日…

计算机的控制面板打不开,控制面板打不开,教您控制面板打不开怎么办

最近有些不少的小伙伴向小编反映说,控制面板突然出现了打不开的情况,那么遇到这种情况该怎么办呢?其实控制面板打不开很有可能是因为系统文件损坏造成的。今天,小编就来把打不开控制面板的解决方法分享给你们。其实控制面板是我们…

【算法题】Multiples of 3 and 5

Multiples of 3 and 5 原题 题意如下: 找出N以内的3和5的倍数的和。 思路 1、刚看到觉得好弱智,直接遍历一遍不就OK了吗?但是第2和第3个测试用例报了TLE,超时。 2、然后想不出来了,搜了一下,发现有一个类似…

PIL简单图片处理(上)

自己看了下python,本来想照教程上一点一点学的,学了一会发现好没劲(教程本身质量很好),学python就是为了好玩,为什么还这么按部就班勒?果断google下python的爬虫(开始目的是这个&…

方舟服务器制作修改,ARK方舟:生存进化服务器禁止物品制造的修改方法

ARK方舟:生存进化服务器禁止物品制造的修改方法代码对应的文件目录:文件:Game.ini框架:[/script/shootergame.shootergamemode]例如禁用C4遥控器代码为:ConfigOverrideItemCraftingCosts(ItemClassString"PrimalItem_WeaponC4_C",BaseCraftingResourceRequirements((…

SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用友情提示,您阅读本篇博文的先决条件如下: 1、本文示例基于Microsoft SQL Server 2008 R2调测。 2、具…

c .net ajax,Asp.net mvc 2中使用Ajax的三种方式

在Asp.net MVC中,我们能非常方便的使用Ajax。这篇文章将介绍三种Ajax使用的方式,分别为原始的Ajax调用、Jquery、Ajax Helper。分别采用这三种方式结合asp.net mvc去实现一个史上最简单的留言板。首先看一下原始的Ajax的调用的:定义CommentController&am…

爆款AR游戏如何打造?网易杨鹏以《悠梦》为例详解前沿技术

本文来自网易云社区。 7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行。本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术、新实践,如AR、区块链、安全、大数据等。 网易AR游戏生态合作负责人杨鹏表示,传统游戏模式…

fastadmin自定义按钮不是ajax,Fastadmin 自定义按钮实现审核功能

功能描述新增自定义审核按钮,点击审核按钮后,按钮变为取消审核按钮,同理点击取消审核按钮后,按钮变为审核按钮实现功能如下图微信图片_20200827112914.png上代码{field: operate, title: __(Operate), table: table, events: Tabl…

函数的命名空间以及作用域

转载于:https://www.cnblogs.com/mpfei/p/9451208.html

使用vs自带的性能诊断工具

visual studio是个强大的集成开发环境,内置了程序性能诊断工具。下面通过两段代码进行介绍。 static void Main( string[] args){Test1();Test2();Console.ReadKey();}protected static void Test1(){Stopwatch sp new Stopwatch();sp.Start();string str "&…

碧蓝航线8.20服务器维护,碧蓝航线半人马来袭 8.20更新公告

半人马来袭!碧蓝航线将于8月20日9:00~11:00对安卓、iOS全港区进行为期2小时的改造建设,维护后将开启限时活动「盛夏的半人马座」,一起来看看吧。一、内容新增1.开启限时活动「盛夏的半人马座」,活动时间8月20日维护后~8月30日&…

1、rbac权限组件-初识, 中间件校验1

1、权限组件rbac 1、什么是权限 1 项目与应用 2 什么是权限? 一个包含正则表达式url就是一个权限 who what how ---------->True or Flase 2、版本1:用户表与权限url表 对应关系 # 版本1UserInforname pwdpermissionmodels.manytomany(Permissi…