




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 主讲教师 周立波 第7章输入 输出处理7 1输入 输出基础7 1 1输入 输出概述在Java类库中 IO部分包含 标准输入 输出 文件的操作 网络上的数据流 字符串流 对象流 管道流 zip文件流等 7 1 2流的概念1 流的概念2 输入流与输出流输出流 将数据资源从应用程序传递到外设 外存等的流 称为输出流 OutputStream 输入流 将数据资源从外设或外存传递到应用程序的流称为输入流 InputStream 3 字节流与字符流按照处理对象的不同 又可将流分成字节流和字符流两种 字节流 bytestream 为处理字节的输入和输出提供了方便的方法 字符流 characterstream 为字符的输入和输出处理提供了方便 InputStream类和OutputStream类本身属于字节流的范围 相对应的字符流在Java输入 输出类库中有两个抽象类 Reader和Writer 7 1 3Java中I O处理的类库层次综合考虑 输入流 输出流 和 字节流 字符流 不同的分类方法 Java的流可以由四个抽象类来表示 InputStream OutputStream Reader Writer Java中其他多种多样变化的流均是由它们派生的 1 InputStream类1 InputStream类的方法 1 三个基本的read 方法intread intread byte intread byte intoff intlen 2 其他方法voidclose 完成流操作后 使用该方法关闭流 intavailable 报告立刻可以从流中读取的字节数 skip long 丢弃流中制定数目的字节 booleanmarkSupported voidreset int Voidmark int 这三个方法用于支持流的 回放 回读 操作 2 InputStream类的派生类FileInputStream 用于文件系统的输入 PipeInputStream 用于进行管道方式的输入 FilterInputStream 过滤流的接口 2 OutputStream类1 OutputStream类的方法介绍 1 三个基本的write 方法voidwrite int voidwrite byte voidwrite byte int int 2 其他方法voidclose 完成写操作后 关闭流的方法 voidflush 该方法允许强制执行写操作 2 OutputStream类的派生类 FileOutputStream 用于文件系统的输出 PipedOutputStream 用于管道方式的输出 FilterOutputStream 为过滤流提供了统一的接口 使得在数据输出时进行数据处理 ByteArrayOutputStream 用于向内存写数据 ObjectOutputStream 用于对象操作序列化的输出流类 BufferedOutputStream 在进行数据写出时将数据保存在数据缓冲区 以提高写出速度 3 Reader类Reader类是基于字符流处理的输入流类 4 Writer类Writer类是基于字符流处理的输出流类 7 1 4节点流和过滤流根据流相对于程序的另一个端点的不同 可以分为节点流和过滤流 节点流 以特定源 比如磁盘文件 内存区域等之间的管道为端点构造的I 0流称为节点流 过滤流 以其他已经存在的流为端点构造的I O流称为过滤流 7 1 5输入 输出流的套接一般通过过滤流将多个流套接在一起 利用各种流的特性共同处理数据流 套接的多个流就构成了一个流链 7 1 6常用的输入 输出流1 文件流FileInputStream FileOutputStream FileReader FileWriter 1 FileInputStreamFileInputStream类是为了处理来源于文件的面向字节输入而设计的类 它是由InputStream类派生而来的 构造方法 FileInputStream Filefile FileInputStream FileDescriptorfdObj FileInputStream Stringname 公有方法intavailable 获取可以从文件流中读取的字节数目 voidclose 关闭该文件流 intread 从文件流读取一个字节的数据 intread byte b 从文件流读取b length字节的数据到一个字节数组中 intread byte b intoff intlen 从文件流读取len字节的数据到一个字节数组中 longskip longn 略过并舍弃n个字节的数据 FileInputStream类的示例例1 读取文件全部内容例2 读取文件部分内容例3 读取时跳过文件部分内容 2 FileOutputStream类在Java中 文件的写入可以通过FileOutputStream类的方法实现 用户可以利用该类一个字节一个字节地将数据写入文件 构造方法FileOutputStream Filefile FileOutputStream FileDescriptorfdObj FileOutputStream Stringname FileOutputStream Stringname booleanappend 常用方法voidclose 关闭输出流 protectedvoidfinalize 确认该输出流没有任何引用的时候调用close方法 voidwrite byte b 从指定字节数组写入输出流 voidwrite byte b intoff intlen 从指定字节数组写入指定字符到输出流 voidwrite intb 写入指定的字节到输出流 3 文件字符流 FileReader类和FileWriter类 FileReader类创建一个可以读取文件内容的Reader类 FileWriter创建一个可以写文件的Writer类 例子 通过文件字符流实现文本的复制2 缓存流缓存流包括BufferedReader BufferedWriter类和BufferedInputStream BufferedOutputStream类缓存流把数据从原始流成块读入或把数据积累到一个大数据块后再成批写出 通过减少系统资源的读写次数来加快程序的执行 注 BufferedOutputStream和BufferedWriter类仅仅在缓冲区满或调用flush 方法时才将数据写出 缓存流是过滤流 在创建具体缓存流时 需要给出一个InputStream OutputStream类型的流作为前端流 并可以指明缓冲区的大小 例如 InputStream类的构造方法 publicBufferedInputStream InputStreamin publicBufferedInputStream InputStreamin intsize BufferedReader类中增加了一个有用的方法readLine 该方法读一行字符返回 3 管道流管道流可以实现线程间数据的直接传输 4 数据流数据流包括DataInputStream DataOutputStream类 它们允许按Java的基本数据类型读写流中的数据 这两个类中提供了很多读写基本数据类型的方法 5 标准输入 输出Java在System类中定义了与系统标准输入 输出相关联的三个流 它们是 System in System out System err System类是Java中一个功能很强大的类 利用它可以获得Java运行时的系统信息 System类的所有变量和方法都是static System in 标准输入流 这个流在程序运行时一直打开并准备好提供输入的数据 该流一般对应于键盘的输入 System out 标准输出流 这个流在程序运行时一直打开并准备好接收输出的数据 该流一般对应于屏幕 System err 标准错误输出流 这个流在程序运行时一直打开并准备好接收输出的数据 该流一般对应于屏幕并且用来显示错误消息 1 标准输入 System in 用System in的read 方法接受从键盘读入的数据 也可以在System in上套接其他过滤流 这样可以使用更方便的方法从标准输入流上读取数据 注 必须使用try catch对System in read 可能抛出的IOException类型的异常进行处理 执行System in read 方法将从键盘缓冲区读入一个字节的数据 但返回的是16位的整型值 该整型值只有低位字节是真正输入的数据 高位字节全部是零 2 标准输出 System out 标准输出是打印输出流PrintStream类的对象 PrintStream是一种过滤流 它定义了屏幕上显示不同类型数据的方法print println 增 字节流与字符流的转换InputStreamReader类和OutputStreamWriter类是字节流和字符流之间转换的类 前者可以将一个字节流中的字节码解码成字符 后者将写入的字符编码成字节后写入到一个字节流 InputStreamReader有两个主要的构造函数 InputStreamReader InputStreamin 用默认的字符集创建一个对象 InputStreamReader InputStreamin StringcharsetName 接受以指定字符集名的字符创 并用该字符集创建对象 为了达到最好的效率 避免频繁进行字符与字节间的相互转换 最好不用这两个类来进行读写 应尽量使用BufferedWriter类包装OutputStreamWriter类 用BufferedReader类包装InputStreamReader类 包装方法 BufferedWriterout newBufferedWriter newOutputStreamWriter System out BufferedReaderin newBufferedReader newOutputStreamReader System in 7 2文件和目录管理在Java中文件的处理被统一到了流处理 但有些操作无法通过流的方式完成 而要通过File类 File类直接处理文件和文件系统 它用来操纵文件和获取文件的信息 但不提供对文件数据读取的方法 这些方法由文件流提供 7 2 1创建File类的对象File类的构造方法 1 publicFile Stringpathname 参数pathname指定新创建的File对象对应的磁盘文件或目录名及其路径名 2 publicFile Stringparent Stringchild 参数parent指定了文件或目录的父目录的绝对或相对路径 参数child指定了文件或目录名 将路径与名称分开的好处是相同路径的文件或目录可以共享同一个路径字符串 便于管理和修改 3 publicFile Fileparent Stringchild 参数parent是已经存在的代表文件或父目录的File类对象 参数child表示文件或目录名 7 2 2操纵File对象1 文件名的操作getName 获取该文件的名字 getAbsolutePath 获取抽象的路径名的绝对字符串 getPath 获取该文件的路径 renameTo Filef 将文件重命名为f所对应的文件名 2 文件信息测试isAbsolute 测试文件是否用绝对路径名来表示 canRead 测试程序是否能从该文件读 canWrite 测试程序是否能够对文件写操作 exists 判断文件是否存在 isDirectory 判断一个文件是否是目录 isFile 判断一个文件是否是文件 3 获取文件一般信息与常用操作length 返回该文件的长度 以byte为单位 lastModified 返回文件最后被修改的时间 delete 删除文件或目录 4 目录操作String list 如果该文件是一个目录 返回该目录下所有文件名的列表 mkdir 建立一个目录 该目录由File对象表示 7 3随机存取文件7 3 1RandomAccessFile类概述Java中使用RandomAccessFile类实现对文件内容的随机读写操作 同I O流类相比 它最大的区别是该类既可以对文件进行读操作 也可以对文件进行写操作 并提供了比较全面的数据读写方法 7 3 2随机存取文件的创建RandomAccessFile类的构造方法 publicRandomAccessFile Stringname Stringmode throwsFileNotFoundException publicRandomAccessFile Filefile Stringmode throwsFileNotFoundException 参数mode规定了RandomAccessFile对象可以用何种方式打开和访问指定的文件 Mode有四种取值 r rw rwd rws r 以只读方式打开文件 rw 以读写方式打开文件 rwd 以读写方式打开文件 并且要求对文件内容的更新要同步地写到底层存储设备 rws 与 rwd 基本相同 但还可以更新文件的元数据 metaData 7 3 3随机存取文件的操作1 文件指针的操作若要在文件的任意位置进行数据的读写 必须定义文件指针或称为文件位置指针 以及移动这个指针的方法 文件指针是指以字节为单位的相对于文件开头的偏移量 是下次读 写的起点 RandomAccessFile类的文件指针操作方法 longgetFilePointer 返回当前文件指针 既从文件开头算起的绝对位置 voidseek longpos 将文件指针定位到指定位置 longlenth 返回文件长度 intskipByte intn 从当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废旧汽车回收利用-洞察及研究
- 深度学习在字符串匹配中的应用-洞察及研究
- 基于免疫疗法的骨癌治疗策略-洞察及研究
- 人教版高三语文下学期高考语文图文转换单元达标自检题学能测试试题
- 【语文】湖北省武汉市武昌水果湖第二小学小学二年级上册期末试题
- 瑞士银行安全测试题及答案解析
- 交通安全法律考试题库及答案解析
- 2025年亳州高新区及亳州十八中第二次公开招聘教师30名备考考试题库附答案解析
- 2025福建福州建工集团(厦门)有限责任公司(第二批)招聘1人备考考试题库附答案解析
- 南昌市劳动保障事务代理中心招聘外包试验检测师备考考试题库附答案解析
- 【精品】2020年职业病诊断医师资格培训考试题
- 五年级《欧洲民间故事》知识考试题库(含答案)
- 派车单(标准样本)
- 少先队大队委申请表
- 浦东机场手册
- 柴油机负荷特性曲线比较课件
- JGJ保温防火复合板应用技术
- 《认识液体》-完整版PPT
- 《跳长绳绕“8”字跳绳》教学设计-小学《体育与健康》(水平二)四年级上册-人教版
- 幼儿园绘本:《闪闪的红星》 红色故事
- 小学生符号意识与模型思想的发展与培养
评论
0/150
提交评论