`
shameant
  • 浏览: 58769 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 基础之IO---温故(2)

阅读更多

1、在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)
2、任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象
既然它能产生出数据,我们就可以将数据取出,java对封装的通用方法就read()方法了--(出水龙头)
3、任何有能力接收数据源(流)的javaio对象我们就可以看作是一个OutputStream对象
同样,它能接收数据,我们就可以调用它的write方法,来让它接收数据--(进水龙头了,呵呵)
4、当然,我们可以在Inputstream和OutputStream数据源的基础上,从实际需要触发,
来重新封装出不同性能机制的输入、输出流了,java.io包中提供了很丰富的输入、输出流对象,如:
基于字节流的stream:
DataOutputStream----DataInputStream:
FileOutputStream-----FileInputStream:
.............等,可以用InputStream和OutputStream从JDK文档查阅
基于字符流的stream(典型的以write和reader来标识的):
FileWriter---FileReader:
StringWriter---StringReader:
.........等,你自己可以用Writer和Reader从JDK文档里头查看说明
stream应该是水龙头里的水资源,
InputStream:是一个出水龙头(把水封装在里头)的一个实物对象,该对象的read方法呢,就想成这个
出水龙头这一机制对象的开关钮,你read或openStream(其他对象包容InputStream对象的对象方法)一下呢,就等于打开了出水龙头的按钮,水就出来了,里头封装的水是什么性质的呢,你就用相应的容器来装,如string或byte[].....
OutputStream:你就在InputStream基础上反着想就ok了
-------------------------------------------------------------------------------------------------------------------------
OutputStream
(1)输出数据
   void write(int b)往流中写一个字节b
   void write(byte b[])往流中写一个字节数组b
   void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节写入流中
 (2)
   flush()刷空输出流,并输出所有被缓存的字节
           由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。
(3)关闭流
   close()流操作完毕后必须关闭。
------------------------------------------------------------------------------------------------------------------------
InputStream
(1)从流中读取数据
   int read() 读取一个字节,返回值为所读得字节
   int read(byte b[]) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的
                      字节的数量。
   int read(byte b[] ,int off,int len)读取len个字节,放置到以下标off开始字节数组b中,返回值为实际
                                       读取的字节的数量。
   int available() 返回值为流中尚未读取的字节的数量。
   long skip(long n);读指针跳过n个字节不读,返回值为实际跳过的字节数量
(2)关闭流
   close() 流操作完毕后必须关闭
(3)使用输入流中的标记
   void mark(int readlimit)纪录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后
                           所标记的指针位置才实效。
   void reset() 把读指针重新指向用mark方法所记录的位置
   boolean markSupported() 当前的流是否支持读指针的记录功能。
-----------------------------------------------------------------------------------------------------------------------

Java IO 通过 Stream (流)来实现 。关于流,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的等。就好像管道里面可以流动水,也可以流动石油一样。
而对应于流还有一个概念:输入、输出设备。这些设备可以是磁盘文件、键盘(输入设备)、显示器(输出设备)、打印机(输出设备)、网络套接字等等。

 

下面,我们就来了解“流”。
Java中定义了两种类型的流:字节型,和字符型。
字节流:处理字节的输入和输出。包括读写二进制数据等方面的内容。
字符流:处理字符的输入和输出。他采用的是Unicode编码,可以实现国际化。使用字符流的另外一个好处就是:字符流比字节流更有效率。

 

字节流:
字节流包含两个顶层抽象类:InputStreamOutputStream

1:字节流的两个顶层类是抽象类,分别是:InputStreamOutputStream

2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。

 

下面简单介绍字节流的几个常用子类:::

 

字节流类
功能简单介绍
DataInputStream
包含了读取Java标准数据类型的输入流
DataOutputStream
包含了写Java标准数据类型的输出流
ByteArrayInputStream
从字节数组读取的输入流
ByteArrayOutputStream
写入字节数组的输出流
FileInputStream
从文件读入的输入流
FileOutputStream
写入文件的输出流
PrintStream
包含最常见的Print()和Println()的输出流
PushbackInputStream
返回一个字节到输入流,主要用于编译器的实现
PipedInputStream
输出管道
PipedOutputStream
输入管道
SequenceInputStream
将n个输入流联合起来,一个接一个按一定顺序读取
RandomAccessFile
随机访问文件
BufferInputStream
缓冲输入流
BufferOutputStream
缓冲输出流
FilterInputStream
实现了InputStream Interface
FilterOutputStream
实现了OutputStream Interface
InputStream
抽象类,描述流的输入
OutputStream
抽象类,描述流的输入

 

抽象类InputStream 和OutpurStream定义了实用的方法,其中最主要的是read()和
write()。这两个方法在InputStreamOutputStream 中声明为抽象方法,由子流类overwrite实现。

 

2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。

 

下面简单介绍字节流的几个常用子类:::

 

字节流类
功能简单介绍
DataInputStream
包含了读取Java标准数据类型的输入流
DataOutputStream
包含了写Java标准数据类型的输出流
ByteArrayInputStream
从字节数组读取的输入流
ByteArrayOutputStream
写入字节数组的输出流
FileInputStream
从文件读入的输入流
FileOutputStream
写入文件的输出流
PrintStream
包含最常见的Print()和Println()的输出流
PushbackInputStream
返回一个字节到输入流,主要用于编译器的实现
PipedInputStream
输出管道
PipedOutputStream
输入管道
SequenceInputStream
将n个输入流联合起来,一个接一个按一定顺序读取
RandomAccessFile
随机访问文件
BufferInputStream
缓冲输入流
BufferOutputStream
缓冲输出流
FilterInputStream
实现了InputStream Interface
FilterOutputStream
实现了OutputStream Interface
InputStream
抽象类,描述流的输入
OutputStream
抽象类,描述流的输入

 

抽象类InputStream 和OutpurStream定义了实用的方法,其中最主要的是read()和
write()。这两个方法在InputStreamOutputStream 中声明为抽象方法,由子流类overwrite实现。
分享到:
评论

相关推荐

    积分管理系统java源码-new-and-old:实习过程中的温故知新

    温故: 资源的释放问题: java中需要手动释放的资源目前接触的主要有 1)io流资源 2)jdbc资源 关闭原则主要是先开后关,从里到外。 具体实现方法为放在try-catch-finally语句块中。 其中对于流的关闭,jdk1.7以上...

    mtk实例教程(新手入门-老手温故)

    3. **编程基础**:教程会深入讲解MMI的编程语言和语法,可能是Java或者特定于MediaTek的API。内容可能涵盖变量、控制结构、函数、异常处理等基本概念。 4. **UI设计**:MMI提供了丰富的界面元素和布局管理工具,...

    Python 温故-作者:赖勇浩

    ### Python 温故知识点解析 #### 一、数值类型 在Python中,数值类型...以上是对《Python 温故》一文中提到的部分知识点的详细解释和示例展示,这些基础知识对于任何想要深入学习Python的开发者来说都是非常重要的。

    java7源码-coder-tools:开发者的工具箱,包含各种第三方类库,示例

    java7 源码 coder-tools是程序员对一些新类库、新技术、新特性研究的笔记,为了让您更快更容易对这些新东西入手,时间久了可以达到温故而知新 jvm-library design-pattern 包含23种设计模式 structure-arithmetic ...

    12-历史温故小程序.zip

    2、学习目标:快速完成相关题目设计; 3、应用场景:课程设计、diy、毕业、参赛; 4、特点:直接可以编辑使用; 5、使用人群:设计参赛人员,学生,教师等。 6、使用说明:下载解压可直接使用。 7、能学到什么:通过...

    java版斗地主源码-Programming-and-non-programming-materials-for-myself:编程和非编程材

    java版斗地主源码 编程、非编程资料(自留阅读) 目录 个人 专业 工具 团队 商业 国家 趋势 前言 无意间看到的文章, 在这篇文章中,看到了stackoverflow上的两个讨论: , 翻译了中文版本: , 翻译了中文版本: ...

    java多线程设计模式详解(PDF及源码)

    本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...

    java经典算法案例

    通过深入学习和实践这些Java经典算法案例,不仅能提升编程技巧,还能培养良好的问题解决思路,为成为一名优秀的Java开发者奠定坚实基础。无论是初级程序员还是经验丰富的工程师,都应该不断学习和温故这些算法知识,...

    电子基础知识(温故而知新)

    很基础的电子基础东西,相信很多朋友是不需要的,不过还是放上去,有需要回顾一下的~~~~~~~ 请看这里!

    JavaHub:Java程序员学习之路,持续更新原创内容,欢迎Star

    Java基础 网络基础 Linux MySQL基础 MySQL架构学习笔记 温故而知新-MySQL数据类型 MySQL索引实战经验总结 提高篇 源码阅读 源码阅读之Vector 源码阅读之ArrayList 并发编程 高并发编程-AQS深入解析 高并发编程-...

    java多线程设计模式及源码

    多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍JAVA线程相关的设计模式概念,并且通过实际的JAVA程序范例和UML图示来一一解说,书中有代码的重要部分加上标注使读者更加容易...

    学习java的心得体会 (2).docx

    学习 Java 需要从基础知识的学习和框架的掌握开始,基础知识掌握扎实以后,多多学习各种框架有助于自己少走很多弯路。 在学习 Java 时需要掌握 Unix 开发环境、Unix 系统原理、Unix 常用命令,熟练掌握 Unix 常用...

    韩顺平Sqlhelper.java

    韩顺平Sqlhelper.对初学者或者老鸟都是很有帮助的东西。温故而知新。韩顺平Sqlhelper.java

    java多线程同步例子

    java多线程同步互斥访问实例,对于初学者或是温故而知新的同道中人都是一个很好的学习资料

    CPU 技术温故而知新(之三).pdf

    CPU 技术温故而知新(之三).pdf

    指尖疯Android4.4视频第20集:File和IO存储

    文件和I/O存储,其实说白了属于java体系范畴,之所以还要拿到android体系中说道一下,是因为文件和I/O存储是非常经典的存储方式,在手机开发中应用也非常的广泛,所以疯兄这里也顺带讲解一番,如果已经有了java的...

    实战无线通信应知应会——新手入门,老手温故.pdf

    本书深入浅出地讲解了无线通信的基础理论与实践操作,从无线通信的本质出发,探讨了信号在无线信道中的传输机制,以及如何克服干扰与提高信息传送效率的关键技术。 ### 无线通信的本质 无线通信的核心在于信号的...

    java面试题总结

    对java只是的总结就像温故而知新,虽然基础,却非常实用,对面试的你肯定有用。

    开源bbs源码java-enjoy-php:小白PHP修炼秘笈

    学JAVA的狂赞JAVA在服务器端的运行效率和跨平台优势,学C#的向人们深情款款的介绍宇宙间最强大的IDE(VS系列),学c/c++的试图让人们看清楚,c才是运行效率最好的语言,没有之一。python的拥护者试图用20代码来完成用c...

Global site tag (gtag.js) - Google Analytics