好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第7章输入输出系统.doc

20页
  • 卖家[上传人]:m****
  • 文档编号:559056086
  • 上传时间:2023-07-12
  • 文档格式:DOC
  • 文档大小:551.04KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第7章 输入输出系统7.1 I/O 流概述7.2 流的分类7.3 字节流的处理7.4 字符流的处理7.5 文件处理7.6 对象的串行化7.7 输入输出程序例幻灯片27.1 I/O 流概述l 在Java中,把所有的输入和输出都当做流来处理 "流"是一个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象"流"屏蔽了实际的输入/输出设备中处理数据的细节l 一个程序可以打开一个数据源上的流,然后按顺序读取这个流中的数据到程序中,这样的流称为输入流;一个程序也可以打开一个目的地的流,然后按顺序的把程序中的数据写入到这个目的地中,这样的流称为输出流,其过程如图所示幻灯片3l JDK 提供了包java.io,其中包括一系列的类来实现输入/输出处理幻灯片47.2 流的分类l Java的输入/输出流中,根据它们的数据类型,主要可分为两类:字节流(Btye Stream)和字符流(Character Stream)l 在java.io中包含子类较多的有“四大家族”,它们分别是l InputStream, OutputStreaml Reader, Writer幻灯片51. 字节流l 字节流是按字节读/写二进制数据。

      l 字节流有两个基本的类:InputStream类和OutputStream类InputStream类用于处理字节输入流,OutputStream类用于处理字节输出流,这两个都是抽象类l 从InputStream和OutputStream派生出来的一系列类这类流以字节(byte)为基本处理单位 幻灯片6幻灯片82. 字符流l 字符流的输入/输出数据是字符码,即Unicode字符l 字符流有两个基本类:Reader类和Writer类Reader类用于处理字符输入流,Writer类用于处理字符输出流l 从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位  幻灯片10幻灯片113. 其它l 文件处理:l File、RandomAccessFile;l 接口:l DataInput、DataOutput、ObjectInput、ObjectOutput;幻灯片127.3 字节流的处理1. InputStreaml ◇ 从流中读取数据:l int read( ) //读取一个字节,返回值为所读的字节l int read( byte b[ ] ) //读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际读取的字节的数量l int read( byte b[ ], int off, int len ) //读取len个字节,放置到以下标off开始字节数组b中,返回值为实际读取的字节的数量 l int available( ) //返回值为流中尚未读取的字节的数量l long skip( long n ) //读指针跳过n个字节不读,返回值为实际跳过的字节数量幻灯片13l ◇ 关闭流:l close( ) //流操作完毕后必须关闭l   l ◇ 使用输入流中的标记:l void mark( int readlimit ) //记录当前读指针所在位置,readlimit表示读指针读出readlimit个字节后所标记的指针位置才失效l void reset( ) //把读指针重新指向用mark方法所记录的位置l boolean markSupported( ) //当前的流是否支持读指针的记录功能幻灯片142.OutputStreaml ◇ 输出数据:l void write( int b )  //将指定的字节写入此输出流,要写入的字节是参数 b 的八个低位。

      b 的 24 个高位将被忽略l void write( byte b[ ] ) //将 b.length 个字节从指定的字节数组写入此输出流l void write( byte b[ ], int off, int len ) //把字节数组b中从下标off开始,长度为len的字节写入流中 l ◇ flush( )  //刷空输出流,并输出所有被缓存的字节由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中l   l ◇ 关闭流:l close( )  //流操作完毕后必须关闭幻灯片153. 标准流l 在Java程序开始执行时,Java会创建三个与设备相关联的流对象:System.in、System.out和System.errl System.in 标准输入流,类型是InputStreaml 对象使程序能够读取来自键盘的输入;l System.out 标准输出流,类型是PrintStreaml 对象使程序能够向屏幕输出数据;l System.err 标准错误流,类型是PrintStreaml 对象使程序能够向屏幕输出错误信息幻灯片16l 每种标准流都可以被重定向。

      对System.in进行重定向,程序能够从其它数据源读取数据;对System.out和System.err进行重新定向,使程序能够将输出数据和错误信息发送到其它的位置,比如磁盘上的某个文件l 例:P152幻灯片174. 在使用输入输出流类时,有两个语句总是要注意的:l 一是导入java.io包(import java.io.*;);l 二是对IOException异常的处理,一般是在调用的方法的声明时"throws IOException",当然也可以用try-catch语句进行异常处理幻灯片185. 过滤流l 过滤流在读/写数据的同时可以对数据进行处理,它将其它流用作其基本数据源,它可以直接传输数据或提供一些额外的功能l 类FilterInputStream和FilterOutputStream分别作为所有过滤输入流和输出流的父类幻灯片19l 为了使用一个过滤流,必须首先把过滤流连接到某个输入/出流上,通常通过在构造方法的参数中指定所要连接的输入/出流来实现例如:l FilterInputStream( InputStream in );l FilterOutputStream( OutputStream out );幻灯片20几种常见的过滤流l ◇ BufferedInputStream和BufferedOutputStreaml 缓冲流,用于提高输入/输出处理的效率。

      l ◇ DataInputStream 和 DataOutputStreaml 不仅能读/写数据流,而且能读/写各种的java语言的基本类型,如:boolean,int,float等l ◇ LineNumberInputStreaml 除了提供对输入处理的支持外,LineNumberInputStream可以记录当前的行号l ◇ PushbackInputStreaml 提供了一个方法可以把刚读过的字节退回到输入流中,以便重新再读一遍l ◇PrintStreaml 输出各种数据值表示形式幻灯片21BufferedInputStreaml BufferedInputStream(InputStream in) l 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用 l BufferedInputStream(InputStream in, int size) l 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使 幻灯片22BufferedOutputStreaml BufferedOutputStream(OutputStream out) l 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

      l BufferedOutputStream(OutputStream out, int size) l 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流 幻灯片23DataInputStreaml DataInputStream(InputStream in) l 使用指定的底层 InputStream 创建一个 DataInputStreaml int read(byte[] b) l boolean readBoolean() l byte readByte() l char readChar() l double readDouble() l float readFloat() l int readInt() 幻灯片24DataOutputStreaml DataOutputStream(OutputStream out) l 创建一个新的数据输出流,将数据写入指定基础输出流l void writeBoolean(boolean v) l void writeByte(int v) l void writeBytes(String s) l void writeChar(int v) l void writeChars(String s) l void writeDouble(double v) l void writeFloat(float v) l void writeInt(int v) l void writeLong(long v) l void writeShort(int v) 幻灯片25PrintStreaml PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式(字符)。

      它还提供其他两项功能:l 与其他输出流不同,PrintStream 永远不会抛出 IOException,而是异常情况仅设置可通过 checkError 方法测试的内部标志l 自动刷新幻灯片26l PrintStream(File file) l 创建具有指定文件且不带自动行刷新的新打印流 l PrintStream(File file, String csn) l 创建具有指定文件名称和字符集且不带自动行刷新的新打印流 l PrintStream(OutputStream out) l 创建新的打印流 l PrintStream(OutputStream out, boolean autoFlush) l 创建新的打印流 l PrintStream(OutputStream out, boolean autoFlush, String encoding) l 创建新的打印流 l PrintStream(String fileName) l 创建具有指定文件名称且不带自动行刷新的新打印流 l PrintStream(String fileName, String csn) l 创建具有指定文件名称和字符集且不带自动行刷新的新打印流。

      幻灯片276. FileInputStreaml 从文件系统中的某个文件中获得输入字节l FileInputStream(File file) l 通过打开一个到实际文件。

      点击阅读更多内容
      猜您喜欢
      山东省枣庄市中考第三次适应性训练数学试题及答案.doc 无锡市重点中学2023-2024学年高一数学第二学期期末统考模拟试题含解析.doc 江苏省泰州市2023-2024学年高一数学第二学期期末检测试题含解析.doc 浙江省温州市2023-2024学年高一下数学期末教学质量检测试题含解析.doc 方向关系 拓扑关系 井字投影模型 定性组合推理 一致性检验.doc 江苏省泰兴市第三高级中学2024届数学高一下期末达标检测模拟试题含解析.doc 阜阳幼儿师范高等专科学校学术报告厅改造.doc 沪科版八年级数学第一学期期末考试试卷三.doc 蒙古北京八中乌兰察布分校2024年数学高一下期末预测试题含解析.doc 辽宁省重点名校2024年高一数学第二学期期末复习检测模拟试题含解析.doc 抗生素生产工艺.doc 广东省东莞市高级中学2024届高一下数学期末联考试题含解析.doc 广东省东莞市达标名校2024届高一数学第二学期期末综合测试试题含解析.doc 江西省南昌市东湖区第十中学2024届高一数学第二学期期末预测试题含解析.doc 浙江省诸暨市2023-2024学年高一下数学期末复习检测试题含解析.doc 江西省上饶市广丰县新实中学2024届数学高一下期末考试试题含解析.doc 江西省上饶市玉山县樟村中学2024届高一数学第二学期期末教学质量检测试题含解析.doc 独臂男孩读后感.doc 广东省揭阳华侨高级中学2024年高一数学第二学期期末联考模拟试题含解析.doc 低年级口算训练策略.doc
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.