编程红宝书(珍藏版) ava 完金自学手册 第12章JaaI/0处理 对于任何程序设计语言而言,输入输出(I/O)系 统是最复杂的一部分,因为通信的双方不仅仅是 Ⅰ/0源端和接收端,还可能是文件、网络链接或内 存磁盘等,而且这些数据的数据格式多样,如字 符、二进制、字节。Java通过创建大量的类库解 决这个问题 Q想桃工业出隙社
第12章 Java I/O处理 • 对于任何程序设计语言而言,输入输出(I/O)系 统是最复杂的一部分,因为通信的双方不仅仅是 I/O源端和接收端,还可能是文件、网络链接或内 存磁盘等,而且这些数据的数据格式多样,如字 符、二进制、字节。Java通过创建大量的类库解 决这个问题
编程红宝书(珍藏版) ava 完金自学手 12.1流( stream)的概念 Java的I/0系统涉及流的概念。一个读取字节序列 的对象被称为输入流,一个可以写入字节序列的 对象称为输出流。输出流和输入流是相对于程序 本身而言的。程序读取数据称为打开输入流,程 序向其他源写入数据称为打开输出流,该过程如 图所示 nput Stream OutPut Stream 程序 流示意图 Q 机械工业出版社 China Machine Press
12.1 流(stream)的概念 • Java的I/O系统涉及流的概念。一个读取字节序列 的对象被称为输入流,一个可以写入字节序列的 对象称为输出流。输出流和输入流是相对于程序 本身而言的。程序读取数据称为打开输入流,程 序向其他源写入数据称为打开输出流,该过程如 图所示
编程红宝书(珍藏版) ava 完金自学手 12.2字符流 在Java的I/O系统提供了 Inputstream和 Outputstream两个抽象类实现字节(8位)数据的 输入输出,其中 Inputstream是输入流的抽象类, 提供了read方法,各个实现了该类的子类都要实 现该方法,如 ObjectInputstream类继承 Inputstream抽象类,重新定义了方法 read o来读 取字节数据。本节介绍抽象类 Inputstream和 Outputstream及其相对应的子类 Q想桃工业出隙社
12.2 字符流 • 在Java的I/O系统提供了InputStream和 OutputStream两个抽象类实现字节(8位)数据的 输入输出,其中InputStream是输入流的抽象类, 提供了read方法,各个实现了该类的子类都要实 现该方法,如ObjectInputStream类继承 InputStream抽象类,重新定义了方法read()来读 取字节数据。本节介绍抽象类InputStream和 OutputStream及其相对应的子类
编程红宝书(珍藏版) ava 完金自学手 2.2.1输入流类 Inputstream 抽象类 Inputstream表示从不同的输入源输入数据的类,这些数据源的数据类型 多样,可以是字节数组、 String对象、类的序列化对象,文件、管道或网络链 接。对于多样的数据类型有相应的输入流类与其对应。下面介绍这些流类,使 读者对这些类的功能和使用方式有基本的了解 Inputstream是个抽象类,提供了抽象read方法,下面几个类是继承自 Inputstream的子类: ByteArray Inputstream(字节数组输入流) Filelnputstream(文件输入流) PipedInputstream(管道输入流) SequenceInputstream(序列化输入流) StringBufferInputstream(字符串缓冲输入流) ObjectInputstream(对象输入流) FilterInputstream(过滤器输入流) 以下的类继承自 Filter Inputstream(过滤器输入流),同时实现了 Datainput 接 LineNumberInputstream(行号输入流) DataInputstream(数据输入输入流) BufferedInputstream(缓冲输入流) PushbackInputStream(推回输入流) Q想桃工业出隙社
12.2.1 输入流类InputStream • 抽象类InputStream表示从不同的输入源输入数据的类,这些数据源的数据类型 多样,可以是字节数组、String对象、类的序列化对象,文件、管道或网络链 接。对于多样的数据类型有相应的输入流类与其对应。下面介绍这些流类,使 读者对这些类的功能和使用方式有基本的了解。 • InputStream是个 抽象类 ,提供 了抽 象read方 法,下 面几 个类是 继承自 InputStream的子类: • ByteArrayInputStream(字节数组输入流) • FileInputStream(文件输入流) • PipedInputStream(管道输入流) • SequenceInputStream(序列化输入流) • StringBufferInputStream(字符串缓冲输入流) • ObjectInputStream(对象输入流) • FilterInputStream(过滤器输入流) • 以下的类继承自FilterInputStream(过滤器输入流),同时实现了DataInput 接口。 • LineNumberInputStream(行号输入流) • DataInputStream(数据输入输入流) • BufferedInputStream(缓冲输入流) • PushbackInputStream(推回输入流)
编程红宝书(珍藏版) ava 完金自学手 12.2.2输出流类 utputstream 抽象类 Outputstream是表示输出数据流的抽象类,与抽象 输入流对应,提供各种流对象的数据输出。下面介绍的输 出流类,可以使读者了解输出流类的功能和使用方式。 Outputstream是个抽象类,提供了抽象 write方法,下面几 个类是继承自 Inputstream的子类,这些类都实现了 write( 方法: ByteArrayOutputstream(字节数组输出流类) Fileoutputstream(文件输出流类) 0 bjectoutputsteam(对象输出流类) Pipedoutputstream(管道输出流类) · FilterOutputStream(过滤器输出流类) 下面三个类继承自 FilterOutputstream类并实现了 Dataout 接口。 DataOutputstream(数据输出流类) BufferedOutputStream(缓冲输出流类) Q想桃工业出隙社 Printstream(打印输出流类
12.2.2输出流类OutputStream • 抽象类OutputStream是表示输出数据流的抽象类,与抽象 输入流对应,提供各种流对象的数据输出。下面介绍的输 出流类,可以使读者了解输出流类的功能和使用方式。 • OutputStream是个抽象类,提供了抽象write方法,下面几 个类是继承自InputStream的子类,这些类都实现了write() 方法: • ByteArrayOutputStream(字节数组输出流类) • FileOutputStream(文件输出流类) • ObjectOutputSteam(对象输出流类) • PipedOutputStream(管道输出流类) • FilterOutputStream(过滤器输出流类) • 下面三个类继承自FilterOutputStream类并实现了DataOut 接口。 • DataOutputStream(数据输出流类) • BufferedOutputStream(缓冲输出流类) • PrintStream(打印输出流类)
编程红宝书(珍藏版) ava 完金自学手 12.3字节流 Java在设计其I/0系统时,把输入输出的数据类型 分为两类,一类是字符流,如上节介绍的 Inputstream和 Outputstream类及其子类都是处理 字符(16bit)流。本节介绍字节(8bit)流,字 节流也分为读流数据类和写流数据类,即 Reader 类和 Writer类及其子类 Q想桃工业出隙社
12.3 字节流 • Java在设计其I/O系统时,把输入输出的数据类型 分为两类,一类是字符流,如上节介绍的 InputStream和OutputStream类及其子类都是处理 字符(16bit)流。本节介绍字节(8bit)流,字 节流也分为读流数据类和写流数据类,即Reader 类和Writer类及其子类
编程红宝书(珍藏版) ava 完金自学手 12.3.1 Writer类 Writer类是字符( Character) 流输出类的父类,它是抽象 类,所有继承自该类的子类都必须实现抽象方法 write,具 体的实现类中 write方法的使用可以参考相应的 Javadoc文 档。这里为了区别 Inputstream和 Outputstream使用了 Reader和 Writer,为了使读者习惯于使用 Reader和 Writer, 同时中文中没有合适的词汇表达相应的流的概念,所以不 在具体翻译为中文,读者使用时只要知道 Reader类负责读 流数据,而 Writera类负责向流中写数据。下面列出继承自 Writer类的子类。 · BufferedWriter(带缓冲 Writer) CharArrayWriter(字符数组 Writer) FilterWriter(带过滤器 Writer) · Printwriter(打印 Writer) PipedWriter(管道 Writer) StringWriter(字符串 Writer) OutputstreamWriter(输出流 Writer) Q想桃工业出隙社
12.3.1 Writer类 • Writer类是字符(Character)流输出类的父类,它是抽象 类,所有继承自该类的子类都必须实现抽象方法write,具 体的实现类中write方法的使用可以参考相应的JavaDoc文 档。这里为了区别InputStream和OutputStream使用了 Reader和Writer,为了使读者习惯于使用Reader和Writer, 同时中文中没有合适的词汇表达相应的流的概念,所以不 在具体翻译为中文,读者使用时只要知道Reader类负责读 流数据,而Writer类负责向流中写数据。下面列出继承自 Writer类的子类。 • BufferedWriter(带缓冲Writer) • CharArrayWriter(字符数组Writer) • FilterWriter(带过滤器 Writer) • PrintWriter(打印Writer) • PipedWriter(管道Writer) • StringWriter(字符串Writer) • OutputStreamWriter(输出流Writer)
编程红宝书(珍藏版) ava 完金自学手 12.3.2 Reader类 Reader类是读取字符( Character)流的父类,它是抽象类 所有继承自该类的子类都必须实现抽象方法read和c0 具体的实现类中read方法的使用可以参考相应的 Javadoc文 档。下面列出继承自 Reader类的子类 BufferedReader(带缓冲 Reader) ChararrayReader(字符数组 Reader) Filereader(文件 Reader) · Filterreader(过滤器 Reader) · InputstreamReader(输入流 Reader) LineNumberreader(带行号 Reader) PipedReader(管道 Reader) PushbackReader(推回 Reader) StringReader(字符串 Reader) Q想桃工业出隙社
12.3.2 Reader类 • Reader类是读取字符(Character)流的父类,它是抽象类, 所有继承自该类的子类都必须实现抽象方法read和close, 具体的实现类中read方法的使用可以参考相应的JavaDoc文 档。下面列出继承自Reader类的子类。 • BufferedReader(带缓冲Reader) • CharArrayReader(字符数组Reader) • FileReader(文件Reader) • FilterReader(过滤器Reader) • InputStreamReader(输入流Reader) • LineNumberReader(带行号Reader) • PipedReader(管道Reader) • PushbackReader(推回Reader) • StringReader(字符串Reader)
编程红宝书(珍藏版) ava 完金自学手 12.4File类 File类最初看起来仿佛是代表文件,其实这点 Java为该类起名确实有迷惑读者的地方,其实 File类可以表示特定文件名(带绝对路径),也 可以是某个目录下多一组文件,该类提供了方法 可以用来访问多个文件。File类提供了丰富的方 法来处理和文件或目录相关的操作。如创建和删 除文件、创建和删除文件夹、通过和其他类配合 使用实现文件的复制和移动等。本节将介绍Fie 类提供的这些功能。 Q想桃工业出隙社
12.4 File类 • File类最初看起来仿佛是代表文件,其实这点 Java为该类起名确实有迷惑读者的地方,其实 File类可以表示特定文件名(带绝对路径),也 可以是某个目录下多一组文件,该类提供了方法 可以用来访问多个文件。File类提供了丰富的方 法来处理和文件或目录相关的操作。如创建和删 除文件、创建和删除文件夹、通过和其他类配合 使用实现文件的复制和移动等。本节将介绍File 类提供的这些功能
编程红宝书(珍藏版) ava 完金自学手 12.4.1创建文件夹(目录) File类提供了丰富的接口函数供用户调用。创建 目录是文件操作中经常遇到的情形,目录提供了 文件存放的位置,用户可以根据需要在磁盘空间 上建立目录。建立目录的方法是调用 mkdir()方法, 代码为创建文件夹程序示例 at CreateNevFolder, nain er.GA器 288871913:22 955 ReadMemorylestclass 创建目录 Q想桃工业出隙社
12.4.1 创建文件夹(目录) • File类提供了丰富的接口函数供用户调用。创建 目录是文件操作中经常遇到的情形,目录提供了 文件存放的位置,用户可以根据需要在磁盘空间 上建立目录。建立目录的方法是调用mkdir()方法, 代码为创建文件夹程序示例