图学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电池没有电了。解决方法…

ArcEngine数据删除几种方法和性能比较

转自原文 ArcEngine数据删除几种方法和性能比较 一、 几种删除方法代码 1. 查询结果中删除 private void Delete1(IFeatureClass PFeatureclass) { IQueryFilter pQueryFilter new QueryFilterClass(); pQueryFilter.WhereClause "objectID<" DeleteNum; IFe…

计算机组成原理中英对照篇,信息科学系课程介绍(中英对照).doc

文档介绍&#xff1a;信息科学系课程介绍(中英对照)序号:1课程编码:14001010课程名称:计算机基础学分:1周学时:2开课系部:信息科学系预修课程:无修读对象:信息管理与信息系统专业本科生课程简介:主要介绍计算机发展历史、常用操作系统、办公和其它应用软件、等内容。通过本课程…

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

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

python之模块calendar(汇集了日历相关的操作)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #calendar日历模块import calendar#3个大类&#xff1a; calendar.Calendar(firstweekday0) calendar.TextCalendar(firstweekday0) calendar.HTMLCalendar(firstweekday0)#返回某月日历 cal calendar.month(2011, 11) print ca…

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

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

计算机网络的构成教学反思,《计算机网络知识》教学反思.doc

文档介绍&#xff1a;《计算机网络知识》教学反思本课时以理论性内容为主,在日常教学过程中往往会以课本宣读为主,很难引起学生的学****兴趣。然而在教学中若能够合理的采用多种教学方式,做到理论联系实际,将达到良好的教学效果。我在本节课教学中,以我校的校园网为模型,充分利…

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

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

抖音C#版,自己抓第三方抖音网站

感谢http://dy.lujianqiang.com技术支持 文章更新&#xff1a;http://dy.lujianqiang.com这个服务器已经关了&#xff0c;现在没用了 版权归抖音公司所有&#xff0c;该博客只是为交流学习所使用,编译后的内容将24小时内删除 该程序所获取到的内容或视频归Beijing Microlive Vi…

linux命令-vim命令模式

编辑模式下 按 “esc” 进去命令模式 &#xff1a;wq 保存并退出 &#xff1a;w 保存 已写入 &#xff1a;q&#xff01;不保存强制退出 &#xff1a;wq&#xff01; 强制保存退出 &#xff1a;set nu 显示行号 &#xff1a;set nonu 去掉行号 &#xff1a;nohl 取消高亮 /字…

ai在计算机教学中的应用,浅谈人工智能在教育中的应用

浅谈人工智能在教育中的应用孙立友摘要&#xff1a;随着人工智能技术的进步&#xff0c;以及研究的深入和在教育领域的逐步推广&#xff0c;对教育领域产生了深远的影响。人工智能对于弥补当前教育存在的种种缺陷和不足&#xff0c;推动教育发展改革和教学现代化进程起着越来越…

TCP 和 UDP

TCP/IP五层网络结构模型 物理层&#xff1a;物理层建立在物理通信介质的基础上&#xff0c;作为系统和通信介质的接口&#xff0c;用来实现数据链路实体间透明的比特 (bit) 流传输。只有该层为真实物理通信&#xff0c;其它各层为虚拟通信 数据链路层:在物理层提供比特流服务的…

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

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

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

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

Java 集合系列目录(Category)

Java 集合系列目录(Category) 转自&#xff1a;Java 集合系列目录(Category) 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 04. Java 集合系列04之 fail-fast总结(通过ArrayList来说明f…

spring的applicationContext.xml如何自动加载

一个web工程自动加载的配置文件只有web.xml&#xff0c;想要加载其他.xml必须在web.xml里面进行配置。 用spring的时候需要一个bean容器来管理所有的bean&#xff0c;所有bean默认是写在applicationContext.xml里的&#xff0c;在web.xml里面是这么设置的&#xff0c; 1 <co…

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

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

ndwi是什么意思_NDWI是什么意思

1. Thus, this indicates that NDWI is a useful vegetation index for estimating forest fire potential in the Atlantic region.因此&#xff0c;这表明NDWI是在大西洋地区的潜在有用的森林火灾指数。2. NDWI的翻译2. Therefore, the NDWI is not suitable for enhancing a…

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

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

python并行计算numpy_【Nature文章摘录】NumPy: 从单机到分布式并行计算

原标题&#xff1a;【Nature文章摘录】NumPy: 从单机到分布式并行计算点击上图&#xff0c;查看详情本公众号的推送以互联网大数据技术为主&#xff0c;是《互联网大数据处理技术与应用》《Python爬虫大数据采集与挖掘》等课程的配套号。内容涉及 大数据采集、存储、分析挖掘的…