`
where
  • 浏览: 80762 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java中的那些“流”之JAVA基础知识之我的理解8

 
阅读更多

IO里的那些流

今天做一个的总结,那些,当然是IO里的那些流.

既然做流,我们就先明确一个概念,即什么是流?

流的概念

Java,把一组有序数据序列称为流.

流的分类:

流按方向分为两种:输入流和输出流.程序向输入流读取数据,向输出流写入数据

输入流:可以从中读取一系列字节的对象称为输入流.

输出流:可以从中写入一系列字节的对象称为输出流.

按照数据流最小数据单元类型分:

1)      数据流最小数据单元为字节,那么这种流叫字节流.

2)      数据流最小数据单元为字符,那么这种流叫字符流.

3)      数据源包括:字节数组,String对象,文件,管道等.(这些名字后面加个流字就可以归为这一类)

流还可以分为:节点流类和过滤流类

这里主要分享一下缓冲流(BufferedInputStream,BufferedOutputStream,他将字节流变成缓冲字节流,这样做最大的优点在于大大提高了性能。当从字节输入流用read()操作,它会一次性读取多个字节来填充内部缓冲,这样就大大减少了程序执行时间。(where还试验了一下,同样一个10MB的文件用缓冲读只需3ms而用数组及时把数组大小设置成10000仍需350ms,而且用数组复制的话很难百分之百复制,总会多出一些字节,者难以避免,所以在此推荐用缓冲流)

PS:默认缓冲区大小事8192字节,可以将缓冲区设定为内存页或磁盘块的整数倍来提高性能。

PPS:在关闭缓冲流时会自动关闭所串接的底层字节流

流的应用

看了这么多流的分类,我们会有个疑问,“这么多流”我们在那种情况下用何钟流?下面就我现在所知,做一个总结。

1)       如果我们要从数据流中读取(写入)指定数据类型的数据,如intfloat型的数值,只要用DateInputStream/DateOutputStream

2)       如果我们要将一个对象从数据流中读取(写入)文件,只要用ObjectInputStream/ObjectOutputStream.

3)       FileInputStream/FileOutputStream,用于从文件读取(写入)数据,主要用于二进制文件的读/写(如读取图像之类的原始字节流)

4)       在分类时我们提到了数据源,当你要写如数组时,按照上面三规律,我们肯定要用ByteArrayOutputStream.写到这我想用法我们基本清楚了。下面我把每一个数据源

FileIputStream

ByteArrayIputStream

FilterIputStream

ObjectIputStream

PipedIputStream

SequenceIputStream

5)       相应的子类做一个列举:

 

 

 

 

 

InputStream

 

 

 

DateIputStream

BufferdIputStream

LineNumberIputStream

PushbackIputStream

 

 

 

 

 

 

6)关于每个类的构造方法JDK文档都有不再赘述

流的一些注意事项

1)每次用完流要记着close(),因为如果不关闭它会一直存在与内存。

2)常用的关闭流的顺序是先关输入流,然后强制输出,最后关闭输出流

3)在关闭缓冲流时会自动关闭所串接的底层字节流

4)用什么方法read就用同样的方法write(每个流都有很多readwrite方法)用的时候要注意。

“流”的事咱先说到这儿,当前也就想到这么多,本来想贴画图板的保存和打开作为流的应用举例,耐于篇幅巨大,只能按文件上传上去,有需要的自行下载。(大家可能说where你这老拿画图板说事,没有一个功能相对完善,界面相对漂亮的画图板,面对这种声音where只能说电脑坏了以后原来做的相对完整的画图板不能用了,于是每次用的画图板都比较粗糙,只实现了相应知识点的功能,当然这样也有好处,对于像where一样的初学者想单看某个功能的实现,这样也方便些,仅作学习之用,特此解释,不过只要时间允许where还是会做一个相对完整的画图板)

 

0
4
分享到:
评论

相关推荐

    JAVA.2核心技术.卷I:基础知识(原书第7版).part1.rar

    全书对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性。 本资源共分4部分,分别为: JAVA.2核心技术.卷I:基础知识(原书第7版).part1.rar ...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    Java核心技术 卷Ⅰ:基础知识 【中文】 第1章概述Java与其他程序设计语言不同的性能。解释这种语言的设计初衷,以及在哪些方 面达到了预期的效果。然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和...

    Java核心技术卷1:基础知识(第9版)(中文版)

    《Java核心技术卷1:基础知识(第8版)(英文版)》示例程序经过精心设计,不但具有实用价值,而且易于阅读理解,可以作为初学者自己编写程序的良好开端,也能够帮助程序员快速地了解Java SE 6的新特性,或迅速从其他语言...

    java基础知识,全面

    java的基础知识,全面,易理解,适合自学。 自己学习总结出来的,希望对大家有帮助

    Java 基础知识学习文档

    Java有兴趣的零基础人员可以通过学习本文档,来加强对Java知识的理解和掌握。

    Java基础知识面试必备

    《Java基础知识面试必备》是一...无论你是Java初学者还是有一定经验的开发者,这份《Java基础知识面试必备》都将是你面试准备过程中的得力助手。它能够帮助你巩固基础知识,提升面试信心,为你的职业发展提供有力支持。

    《Java核心技术 卷Ⅰ:基础知识(原书第8版)》(中文高清PDF) 第一部分(共四部分)

     ■Java语言基础知识  ■面向对象程序设计  ■接口与内部类  ■事件监听Qi模型  ■Swing图形用户界面程序设计  ■打包应用程序  ■异常处理  ■登录与调试  ■泛型程序设计  ■集合框架  ■多线程

    JAVA.2核心技术.卷I:基础知识(原书第7版).part4.rar

    全书对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性。 本资源共分4部分,分别为: JAVA.2核心技术.卷I:基础知识(原书第7版).part1.rar ...

    Java核心技术 第12版 开发基础+高级特性 英文原版

    本书不仅让你深入了解设计和实现 Java 应用涉及的所有基础知识和 Java 特性,还会帮助你掌握开发 Java 程序所需的全部基本技能。相信在学习Java的道路上有了本书的辅助,你的学习一定可以做到事半功倍。 作者简介 ·...

    46道java基础知识面试题详解含答案(值得珍藏)

    在面试过程中,面试官通常会通过询问求职者对于Java基础知识的理解来评估其技能水平。例如,对于面向对象编程的概念、异常处理机制、集合框架的使用等方面的知识,如果求职者能够清晰地解释并给出相应的示例代码,就...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射...

    Java 基础必备知识

    java的基础入门知识网上有很多,很多大神的博客里也有总结,笔者不...所以在这篇基础文档里里,很多基础知识笔者会收集资料,做一个汇总。当然,同时也会加入笔者自己的理解,说一些笔者学习时踩过的坑,分享一些心得

    Java基础知识笔试题及答案.docx

    该文档包含了一系列Java基础知识笔试题,涵盖了面向对象编程、数据类型、控制流、异常处理、多线程等方面的内容。每个问题都设计为测试候选人对Java语言的基本理解和应用能力。 **适用人群:** - Java初学者和初级...

    第1章(Java语言基础知识).ppt

    理解与掌握Java语言的基础知识,能熟练地使用Java语言编写程序 注重理论与实践相结合,理论知识要扎实,注重上机编写、调试程序 培养良好的编码习惯、综合算法设计与编程能力 学会查看帮助文档,通过文档进行学习

    java基础教程

    《Java基础教程(第3版)》以通俗易懂的语言,循序渐进地向读者介绍了Java语言编程的基础知识。针对较难理解的问题,所列举的例子都是由简到繁,便于读者掌握Java编程技巧。在第3版中加大了面向对象的知识容量,补充...

    Java常用基础知识-kaic.docx

    今天我们进入《Java常用基础知识》专题,动力节点Java资源库整合了近年各大厂的面试中的常见问题和知识点。每天更新10个,我们的最终目标就是大厂,若对题目有疑问,可在公众号后台留言提问。 目标:阿里巴巴、腾讯...

    Java基础思维导图(JAVA基础知识汇总)

    Java基础思维导图涵盖大部分Java基础重点内容。适用于新手小白理解Java学习之路。

    JAVA核心技术基础知识配套源代码

    JAVA核心技术基础知识配套源码,对应各个实例,可运行。各个实例精简形象,能很好地帮助理解知识,帮助从零开始构建JAVA知识体系,是很有用的一套示例程序。

    尚硅谷JAVA基础笔记吐血整理

    尚硅谷java教程全程跟听,手动整理,从面向对象开始按章节按课时整理,适合对照视频作为笔试使用/java知识脉络梳理/八股理解背诵

Global site tag (gtag.js) - Google Analytics