- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
9.1I/O流概述
9.2字节流
9.3字符流
9.4转换流
9.5File类;计算机内部以及设备之间的数据传输也离不开交通工具和乘务员,在计算机编程中,将数据传输抽象地表述为“流”(stream),在硬件(可类比铁轨)连通的条件下,程序代码(可类比交通工具和乘务员)统一调度输入设备与输出设备之间的数据传输。用来进行输入/输出操作的流就称为I/O流(iostream)。Java语言提供了丰富的I/O流类型以支持多样化的数据传输,就好比多样化的交通工具一样。;9.1I/O流概述;就像人们出行一样,I/O流也是有方向的,数据从输入设备传输到输出设备。因此,在编程中需要明确哪个是输入设备,哪个是输出设备。在Java语言中输入和输出的概念是相对当前程序所在的内存空间来区分的。从外部设备读取数据到当前程序所在的内存空间就称为输入流(istream),从当前程序的内存空间向外写数据就称为输出流(ostream),Java语言中的I/O流根据操作的数据类型可分为字节流和字符流,它们的定义均位于java.io包里。字节流指的是数据传输时以字节(byte)为单位,它可以用来读写所有类型的文件。字符流指的是数据传输时以字符(char)为单位,它只能用于读写具有字符编码的文本文件。字节流又可分为字节输入流和字节输出流;字符流又可分为字符输入流和字符输出流。I/O流的分类如图9-1-1所示。;Java语言的I/O流比较占用内存资源,在使用完之后应及时关闭。因此Java语言中所有的I/O流均实现了java.io.closeable接口。该接口中只有一个抽象函数close,其声明的语法格式如下:
close方法的功能就是关闭流,同时释放被它占用的所有系统资源。close函数声明中抛出了IOException异常,因此需要用try-catch或try-catch-finally代码块来处理异常。实际上,由于数据传输时可能会遇到各种运行时异常,比如,文件资源找不到、存储空间已满等问题,因此几乎所有的流方法都显式地声明了抛出异常。此外,Java语言中的输出流均实现了java.io.Flushable接口。该接口中也仅定义了一个抽象方法flush,其声明的语法格式如下:
flush方法的功能就是将输出流缓存区的剩余数据全部刷新,防止在写操作过程中???据丢失。该方法也抛出了IOException异常。;9.2字节流;在计算机及智能设备中存储的都是二进制数,存储的最小单元是byte,因此可以使用字节流读写所有的文件,它的应用最为广泛。Java字节流的常用类如图9-2-1所示。;9.2.1字节输入流
字节输入流的顶层父类是InputStream类,它是一个抽象类,直接继承自Object类。InputStream类里面定义了读数据的基本操作方法,如表9-2-1所示。
;由于InputStream类是抽象类,不能直接实例化,因此主要使用它的子类来创建流对象。文件输入流FileInputStream类作为InputStream类的子类流专门用于读取据,应用非常广泛。
需要注意的是,字节输入流的前两个构造函数会抛出异常,需要使用try-catch代码块处理。第一种构造方法需要传入一个描述文件地址的字符串,通过源文件地址创建文件输入流。在计算机中文件地址分为相对路径和绝对路径。相对路径就是相对当前项目所在路径的子路径,绝对路径就是从根目录(盘符)开始的完整描述文件位置的路径。例如,当前Eclipse项目所在的路径为:
那么,以这个项目路径为根目录的Example.java文件的相对路径为:;以盘符为根目录的Example.java文件的绝对路径为:
当通过文件路径为形参的构造函数实例化一个文件输入流时,系统就建立了一个从硬盘指定位置(Example.java的存储位置)到当前程序所在内存单元的联结,也就是输入流管道。然后就可以通过流方法读取数据到内存单元了。FileInputStream类中最常用的方法有read重载方法、available、skip和close方法。下面通过一些示例演示这些方法的使用。
在Java程序中的“\”是转义符号,如果希望使用一个反斜杠,则需要使用“\\”,即反斜杠的转义字符是它本身,这点在书写文件路径时需要格外注意。该示例使用read方法逐个读取文件字节,还使用了available和skip方法。可以看到,如果文件不存在,则会报出运行时异常;当文件存在时,read方法一次读取一个字节,返回该字节的int
您可能关注的文档
- 《焊接技术及应用(》课件_第一单元 焊接专业理论.pptx
- 《焊接技术及应用(》课件_第三单元 焊接专业特种技术.pptx
- 《HTML5+CSS3网页设计与制作》课件_第4章 设计文本样式.pptx
- 《传感器与检测技术》课件_第7章 热电式传感器与温度检测.pptx
- 《传感器与检测技术》课件_第11章 现代传感器与虚拟仪器技术.pptx
- 《MATLAB基础与编程入门》课件_第1章 MATLAB桌面环境.pptx
- 《传感器与检测技术》课件_第5章 霍尔传感器与位移检测.pptx
- 《MATLAB基础与编程入门》课件_第6章 图形基础.pptx
- 《高级财务会计》课件_第七章租赁.ppt
- 《电子技术基础技能实训教程》课件)_第5章.pptx
- 国家安全教育大学生读本高教社2024年8月版课件全套合集(包括绪论总共11章PPT课件).pdf
- 国家安全教育大学生读本高教2024版课件-第三章更好统筹发展和安全.pptx
- 国家安全教育大学生读本高教社2024年8月版教材讲义-第四章 坚持以人民安全为宗旨.docx
- 国家安全教育大学生读本高教2024版课件-第九章筑牢其他各领域国家安全屏障-.pptx
- 国家安全教育大学生读本高教2024版课件-第一章完全准确领会总体国家安全观.pptx
- 国家安全教育大学生读本高教社2024年8月版-导论课件.pptx
- (已瘦身)国家安全教育大学生读本高教社2024年8月版课件全套合集(包括绪论总共11章PPT课件).pptx
- 市直单位党员干部2024年度组织生活会对照检查材料四个带头+上年度查摆问题整改落实情况+自我批评意见.docx
- 某中学委员会关于巡察整改进展情况的报告材料.docx
- 经验交流发言材料:“五向发力”建强堡垒 集聚高质量发展动能.docx
文档评论(0)