轻松学Java之Java的输入输出流.pptx_第1页
轻松学Java之Java的输入输出流.pptx_第2页
轻松学Java之Java的输入输出流.pptx_第3页
轻松学Java之Java的输入输出流.pptx_第4页
轻松学Java之Java的输入输出流.pptx_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章Java的输入输出流 对于任何编程语言 处理数据的输入 输出操作都占有极其重要的地位 Java语言以流的形式进行数据的输入 输出处理 这一章我们将为大家详细讲述输入输出流的概念 文件的概念以及字节的输入输出流和字符的输入输出流 15 1输入输出流概述 数据流是形象的概念 可以理解为是一种 数据的管道 管道中流动的东西可以是基于字节 也可以是基于字符的 就好像管道里面可以流动水 也可以流动石油一样 当程序需要读取数据的时候 就会开启一个通向数据源的管道 程序就可以从中提取数据 关于数据流 其输入输出的过程可以用图15 1来表示 15 1输入输出流概述 程序从数据源 包括各种输入设备 如键盘 磁盘 文件等 中读取数据称之为输入 程序将数据写入目标设备 包括各种输出设备 如显示器 磁盘 文件等 称之为输出 我们也可以用示意图15 2来表示 15 1输入输出流概述 数据的输入 输出属于IO部分 Java把处理输入 输出相关的类放在java io包中 而且java io不属于java lang 所以必须使用import将其导入进来 我们可以把常用的java io包架构图用图15 3来表示 15 1输入输出流概述 Java中的数据流分为2种 一种是字节流 另一种是字符流 这两种流主要由4个抽象类来表示 InputStream OutputStream Reader Writer 输入输出各两种 其中InputStream和OutputStream表示字节流 Reader和Writer表示字符流 其他流均是继承这4个抽象类而来的 下面我们就来具体的学习这些流的用法 15 2文件 输入 输出操作经常处理的设备之一是文件 Java语言提供了File类和RandomAccessFile类来对文件进行处理 File类用于管理文件系统中的文件或目录 RandomAccessFile类提供了随机读写文件的功能 下面对这些内容进行详细介绍 15 2 1File类 File类是一个可以对文件本身的属性进行操作的类 例如 可以使用File类中的方法获取文件或者目录的信息 还可以对文件进行创建 修改和删除等操作 File类除了对文件进行操作外 Java允许使用File类将目录当作文件进行处理 File类构造方法如图15 4所示 15 2 1File类 而File类定义的一些主要方法我们可以用表15 1来表示 下面我们再来讲一些对文件的具体操作 以更好的加深对File类的理解 15 2 2文件的创建 修改与删除 File类中定义了一些方法 允许对文件和目录进行创建 修改与删除操作 其有关对文件和目录进行创建 修改与删除操作的方法 我们总结在了表15 2中 创建文件使用File createNewFile 方法 如果该文件创建成功 返回true 如果该文件已经存在 则创建失败 返回false 如果有错误发生 比如路径找不到等 则会抛出IOException异常 15 2 3获取文件属性 File类中获取文件本身信息包括获取文件的名字 文件的长度 文件的路径 判断文件是否可读或者可写 是否存在等 获取文件本身信息的方法以及方法描述如表15 3所示 File类只能对文件进行一些简单操作 比如取属性 创建 删除和更名等 并不能支持文件内容的读写 要想对文件进行读写操作 就必须通过输入输出流来完成 15 2 4RandomAccessFile类 除了File类以外 Java还提供了用来专门处理文件的类 并称之为随机访问文件RandomAccessFile类 该类提供了更加完善的 对文件输入输出操作的功能 RandomAccessFile类可以在任意位置进行读写操作 处理文件更加灵活 RandomAccessFile类的构造方法如图15 10所示 15 2 4RandomAccessFile类 图中mode参数指定用以打开文件的访问模式 mode的具体值及含义如表15 3所示 RandomAccessFile类中的一些主要方法如表15 3所示 15 3字节输入流 字节输入流用于以二进制的形式从数据源中读取数据 InputStream类是字节输入流的基类 该类包括FileInputStream FilterInputStream BufferedInputStream DataInputStream等子类 具体内容如图15 12所示 15 3 1字节输入流InputStream InputStream类是所有字节输入流类的父类 InputStream类中拥有很多字节输入流都需要的方法 可以通过使用InputStream类提供的方法实现从输入流读取字节或者字节数组数据的功能 InputStream类的方法及功能说明如表15 4所示 15 3 2字节文件输入流FileInputStream FileInputStream类可以顺序的读取文本文件中的字节数据 它是InputStream的子类 FileInputStream类中的构造方法如图15 13所示 15 3 2字节文件输入流FileInputStream FileInputStream类中的方法及其描述如表15 5所示 15 3 3输入流过滤器FilterInputStream 过滤流提供了在读写数据的同时可以对数据进行处理的功能 同时还提供了同步机制 使得某一时刻只有一个线程可以访问一个数据流 以防止多个线程同时对一个数据流进行操作所带来的意想不到的结果 为了使用一个过滤流 必须首先把过滤流连接到某个输入输出流上 通常通过在构造方法的参数中指定所要连接的输入输出流来实现 输入流过滤器FilterInputStream的构造方法如图15 15所示 15 3 3输入流过滤器FilterInputStream FilterInputStream定义的方法及方法描述如表15 6所示 15 3 4字节缓冲区输入流BufferedInputStream BufferedInputStream类是InputStream类的间接子类 其直接父类是FilterInputStream 该类采用缓冲区机制进行字节流输入 BufferedInputStream类的构造方法如图15 16所示 15 3 4字节缓冲区输入流BufferedInputStream BufferedInputStream定义的方法及方法描述如表15 7所示 以缓冲区的机制进行流的输入 输出具有更高的执行效率 而且 在字节流方式下 通过调用mark 和reset 方法 可以从指定位置操作 而不仅仅是只能按顺序操作 15 3 5数据输入流DataInputStream DataInputStream 数据输入流 允许应用程序从基础输入流中读取基本Java数据类型 如byte int float boolean等 DataInputStream类的构造方法如图15 18所示 15 3 5数据输入流DataInputStream DataInputStream类定义了许多以read开头后面跟数据类型的方法 这些方法用于读取指定数据类型的数据 如表15 8所示 15 4字节输出流 字节输出流用于以二进制的形式将数据写入目标设备 OutputStream类是字节输出流的基类 该类包括FileOutputStream BufferedOutputStream DataOutputStream PrintStream等子类 如图15 20所示 15 4 1字节输出流 OutputStream类是所有字节输出流类的父类 OutputStream类中拥有很多字节输出流都需要的方法 可以通过使用OutputStream类提供的方法实现向输出流写入字节或者字节数组数据的功能 OutputStream类的方法及方法描述如表15 9所示 15 4 2字节文件输出流FileOutputStream FileOutputStream类用于将字节流数据写入文件 FileOutputStream类的构造方法如图15 21所示 15 4 2字节文件输出流FileOutputStream FileOutputStream中的方法及其使用描述如表15 10所示 15 4 3字节缓冲区输出流BufferedOutputStream BufferedOutputStream类是OutputStream类的间接子类 其直接父类是FilterOutputStream 该类采用缓冲区机制进行字节流输出 通过设置这种输出流 应用程序就可以将各个字节写入基础输出流中 而不必为每次字节写入调用基础系统 BufferedOutputStream类的构造方法如图15 23所示 15 4 3字节缓冲区输出流BufferedOutputStream BufferedOutputStream定义的方法及方法描述如表15 11所示 flush 方法用于强制将缓冲区的内容立即写入输出流 在使用缓存区机制的输出流时 调用write 方法后数据并没有立即写入输出流 而是先放到缓存区中 所以 在必要的地方可以调用flush 方法强制刷新缓冲区 15 4 4数据输出流DataOutputStream DataOutputStream 数据输出流 允许应用程序以适当方式将基本Java数据类型写入输出流中 如byte int float boolean等类型 然后 应用程序可以使用数据输入流将数据读入 DataOutputStream的构造函数如图15 25所示 15 4 4数据输出流DataOutputStream DataOutputStream类中定义的方法及方法描述如表15 12所示 上面的输出结果之所以会产生问号 是因为DataOutputStream类是按二进制输入的这些数据类型 而记事本文件对输出格式进行了转化 按字符输出 所以有些格式显示不出来 变成了问号 15 4 5字节打印流PrintStream PrintStream类用于将字节数据进行格式化的输出 前面介绍的其他OutputStream类的子类在输出时均是保持原有字节数据的格式 而PrintStream类在输出时会进行字符格式转换 默认使用操作系统的编码进行字符转换 PrintStream类中的主要方法及方法描述如表15 13所示 15 5字符输入流 字符输入流用于以字符的形式从数据源中读取数据 Reader类是字符输入流的基类 该类包括FileReader BufferedReader等子类 如图15 28所示 15 5 1字符输入流Reader Reader是Java语言中字符输入流所有类的父类 该类是抽象类 不能被实例化 Reader类中定义了许多与读取字符数据有关的方法 Reader类中定义的方法及方法描述如表15 14所示 15 5 2字符文件输入流FileReader FileReader和FileInputStream类似 所不同的是它是针对字符进行操作 而不是字节 它的间接父类是字符流Reader FileWriter是用于写入字符文件的便捷类 在FileReader类中未自定义方法 而是继承了其父类及间接父类中的方法 FileReader类的构造方法如图15 29所示 15 5 3字符缓冲区输入流BufferedReader BufferedReader类从字符输入流中读取文本 缓冲各个字符 从而提供字符 数组和行的高效读取 Java中 控制台输入由从System in读取数据来完成 BufferedReader支持缓冲输入流 字符缓冲区输入流BufferedReader的构造方法如图15 31所示 15 5 3字符缓冲区输入流BufferedReader BufferedReader类提供的方法及方法描述如表15 15所示 15 6字符输出流 字符输出流用于以字符的形式将数据写入目标设备 Writer类是字符输出流的基类 该类包括FileWriter BufferedWriter PrintWriter等子类 如图15 33所示 15 6 1字符输出流Writer Writer类是字符输出流所有类的父类 该类是抽象类 不能被实例化 Writer类中定义了许多与写字符数据有关的方法 Writer类中定义的方法及方法描述如表15 15所示 15 6 2字符文件输出流FileWriter FileWriter类用于将字符数据写入文件 FileWriter类的构造方法如图15 34所示 15 6 3字符缓冲区输出流BufferedWriter BufferWriter类将文本写入字符输出流 缓冲各个字符 从而提供单个字符 数组和字符串的高效写入 可以指定缓冲区的大小 或者接受默认的大小 在大多数情况下 默认值就足够了 BufferedWriter类的构造函数如图15 36所示 15 6 3字符缓冲区输出流BufferedWriter BufferedWriter提供方法及方法描述如表15 17所示 15 6 4字符打印流PrintWriter PrintWriter类同用于将字符数据进行格式化的输出 前面介绍的其他Writer类的子类在输出时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论