IO里的那些流
今天做一个”流”的总结,那些”流”呢,当然是IO里的那些流.
既然做流,我们就先明确一个概念,即什么是流?
流的概念
在Java中,把一组有序的数据序列称为流.
流的分类:
流按方向分为两种:输入流和输出流.程序向输入流读取数据,向输出流写入数据
输入流:可以从中读取一系列字节的对象称为输入流.
输出流:可以从中写入一系列字节的对象称为输出流.
按照数据流最小数据单元类型分:
1) 数据流最小数据单元为字节,那么这种流叫字节流.
2) 数据流最小数据单元为字符,那么这种流叫字符流.
3) 数据源包括:字节数组,String对象,文件,管道等.(这些名字后面加个流字就可以归为这一类)
流还可以分为:节点流类和过滤流类
这里主要分享一下缓冲流(BufferedInputStream,BufferedOutputStream),他将字节流变成缓冲字节流,这样做最大的优点在于大大提高了性能。当从字节输入流用read()操作,它会一次性读取多个字节来填充内部缓冲,这样就大大减少了程序执行时间。(where还试验了一下,同样一个10MB的文件用缓冲读只需3ms而用数组及时把数组大小设置成10000仍需350多ms,而且用数组复制的话很难百分之百复制,总会多出一些字节,者难以避免,所以在此推荐用缓冲流)
PS:默认缓冲区大小事8192字节,可以将缓冲区设定为内存页或磁盘块的整数倍来提高性能。
PPS:在关闭缓冲流时会自动关闭所串接的底层字节流
流的应用
看了这么多流的分类,我们会有个疑问,“这么多流”我们在那种情况下用何钟流?下面就我现在所知,做一个总结。
1) 如果我们要从数据流中读取(写入)指定数据类型的数据,如int,float型的数值,只要用DateInputStream/DateOutputStream
2) 如果我们要将一个对象从数据流中读取(写入)文件,只要用ObjectInputStream/ObjectOutputStream.
3) FileInputStream/FileOutputStream,用于从文件读取(写入)数据,主要用于二进制文件的读/写(如读取图像之类的原始字节流)
4) 在分类时我们提到了数据源,当你要写如数组时,按照上面三规律,我们肯定要用ByteArrayOutputStream.写到这我想用法我们基本清楚了。下面我把每一个数据源
FileIputStream
|
ByteArrayIputStream
|
FilterIputStream
|
ObjectIputStream
|
PipedIputStream
|
SequenceIputStream
|
5) 相应的子类做一个列举:
DateIputStream
|
BufferdIputStream
|
LineNumberIputStream
|
PushbackIputStream
|
6)关于每个类的构造方法JDK文档都有不再赘述
流的一些注意事项
1)每次用完流要记着close(),因为如果不关闭它会一直存在与内存。
2)常用的关闭流的顺序是先关输入流,然后强制输出,最后关闭输出流
3)在关闭缓冲流时会自动关闭所串接的底层字节流
4)用什么方法read就用同样的方法write(每个流都有很多read和write方法)用的时候要注意。
“流”的事咱先说到这儿,当前也就想到这么多,本来想贴画图板的保存和打开作为流的应用举例,耐于篇幅巨大,只能按文件上传上去,有需要的自行下载。(大家可能说where你这老拿画图板说事,没有一个功能相对完善,界面相对漂亮的画图板,面对这种声音where只能说电脑坏了以后原来做的相对完整的画图板不能用了,于是每次用的画图板都比较粗糙,只实现了相应知识点的功能,当然这样也有好处,对于像where一样的初学者想单看某个功能的实现,这样也方便些,仅作学习之用,特此解释,不过只要时间允许where还是会做一个相对完整的画图板)
分享到:
相关推荐
这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...
综上所述,Java基础知识点包括String类的使用、接口与继承的概念、I/O流的操作以及反射的应用。掌握这些基础知识是成为一名合格Java开发者的前提,也是进一步学习Java高级特性和框架的基础。通过深入理解和实践,...
Java编程语言是软件开发领域的重要组成部分,尤其对于初学者来说,掌握Java基础知识是至关重要的。本文将深入探讨Java的学习入门,分享一些实用的学习经验和技巧。 首先,了解Java的基础概念是开始学习的第一步。...
这份名为“Java基础知识PDF格式”的资料,应该是针对初学者设计的一份教程,旨在帮助读者掌握Java编程的基础概念和技能。在Java的世界里,基础知识包括但不限于以下几个方面: 1. **Java语法**:Java的语法与C++...
这份资料集主要涵盖Java基础知识、初学者入门指南以及常见的Java面试题,旨在帮助学习者系统地理解和掌握Java的核心概念。 首先,Java基础知识是理解任何Java程序的基础。这包括: 1. **Java环境搭建**:学习如何...
学习CoreJava基础知识不仅需要理解和掌握以上知识点,还要通过实践不断巩固,解决实际问题。CoreJavaNoteBook.pdf和corejava.pdf这两份文档,很可能是详尽的教程或笔记,它们将帮助你深入理解并应用这些概念。无论你...
Java基础知识是编程学习的重要起点,尤其对于初学者来说,掌握好这些内容是构建稳固的编程基础的关键。本教程主要围绕“Java基础知识简介”展开,包括Java语言概述、课程架构、Java SE结构、常用命令操作、语言特性...
本书主要涵盖了Java编程的基础知识,为读者提供了全面而深入的理解Java编程环境的必备知识。 首先,Java语言的基础部分包括语法、数据类型、变量、运算符和流程控制。在语法方面,Java采用了类C++的结构,但更加...
这本书“Java基础知识电子书”是为初学者准备的,旨在帮助他们理解和掌握Java编程的基本概念和语法。 Java的基础知识主要包括以下几个方面: 1. **Java环境配置**:在开始编程之前,需要安装Java Development Kit ...
《Java核心技术 卷1 基础知识 原书第8版》是Java开发者必读的经典之作,全面深入地讲解了Java编程的基础概念和技术。这本书涵盖了从Java语言的语法到面向对象编程的核心原理,再到类库的使用,是学习Java开发的权威...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)的James Gosling等人于1991年...无论是初学者还是经验丰富的开发者,对Java基础知识的深入理解和实践都是提升编程技能的关键。
《JAVA核心技术第1卷:基础知识(原书第8版)》是Java编程领域的经典教材,专为初学者设计,旨在全面、深入地介绍Java编程语言的基础概念和技术。这本书覆盖了从基本语法到面向对象编程的核心内容,对于想要踏入Java...
通过这本书的学习,读者不仅可以系统地掌握Java编程的基础知识,还能对Java的运行机制有深入的理解,为后续的进阶学习和实际项目开发打下坚实的基础。在阅读过程中,配合实践和不断的编程练习,将有助于更好地吸收和...
《Java核心技术 卷1 基础知识 原书第9版》是Java开发者必读的经典之作,它深入浅出地介绍了Java编程语言的核心概念和技术。这本书的PDF高清版为学习者提供了清晰易读的阅读体验,方便深入理解每个知识点。 首先,...
### Java基础知识总结(绝对经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人所开发的Oak语言,原计划用于控制嵌入式设备如有线电视交换盒和个人数字助理(PDA)。1994年...
总之,Java的基础知识涉及广泛,从基本语法到面向对象,再到高级特性,都需要深入学习和实践。通过理解这些知识点,开发者可以熟练地构建各种类型的Java应用程序,无论是在桌面端、Web端还是移动设备上。
《Java核心技术卷1基础知识》是Java开发者不可或缺的经典教程,它涵盖了Java编程语言的基本概念和核心概念,为初学者和有经验的程序员提供了深入的理解。这本书的第10版结合了中文和英文两种语言,便于不同语言背景...
下面将详细讲解标题和描述中提及的一些核心Java基础知识。 1. **Java中的引用概念**:在Java中,引用是对象的一个指针,它指向内存中的对象实例。有强引用、软引用、弱引用和虚引用四种类型,分别对应不同的内存...