第08章 输入输出流和文件操作
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java程序设计实用教程(第4版)》
【例8.1】 理解字节流。
(1) 从文件字节流中读写1个字节
1f „ 18 17 „ 10 f „ 8 7 „ 0 写入 字节流 1111 1111 读取 255 0000 0000 0000 0000 0000 0000 1111 1111 -1 1111 1111 1111 1111 1111 1111 1111 1111
【思考题8-2】向字节流写入1字节-256和256,再 各读取1字节,值为多少?为什么? 【答】0,因为-256 (1……1 00000000) ; 0,256 (0……01 00000000)
《Java程序设计实用教程(第4版)》
(2) 从字节流中读写4个字节作为 1f „ 18 17 „ 10 f „ 8 7 „ 0 1个int整数 -128 1111 1111 1111 1111 1111 1111 1000 0000
内存
过滤
Ou tp wri utStr te(v eam alu e) Outp 字节数组 utStre tream S t byte[] buffer w u p r ite(bu am In ) r e f f ffer) bu read( 基本数据类型 DataOutputStream DataInputStream 变量 writeInt(value) Ob readInt() int value jec m t trea rea Inpu S t u d O tS tr utp ct(obj) 对象 O b je eam t c je je ct( Object obj Ob riteOb ) w am tre S t u Inp read()
《Java程序设计实用教程(第4版)》
8.1 文件和流的概念 8.1.1 操作系统中的文件和目录概念
1.
2.
3.
文件与文件系统 目录结构与文件 检索 文件的逻辑结构
① ②
4.
文件的存取方法
① ②
顺序存取 随机存取 操作接口 应用程序接口
5.
文件的使用
① ②
流式文件 记录式文件
《Java程序设计实用教程(第4版)》
DataInput 数据字节输入接口 实现 DataInputStream 数据字节输入流 FileInputStream 文件字节输入流 FilterInputStream 过滤器字节输入流 ObjectInputStream 对象字节输入流 PipedInputStream 管道字节输入流 FileReader 文件字符输入流 InputStreamReader 字节输入流转成字符输入流 FilterReader 过滤器字符输入流 BufferedReader 缓冲字符输入流 PipedReader 管道字符输入流 Reader 字符输入流 Writer 字符输出流 InputStream 字节输入流 OutputStream 字节输出流 ng.Object FileOutputStream 文件字节输出流 FilterInputStream 过滤器字节输出流 ObjectOutputStream 对象字节输出流 PipedOutputStream 管道字节输出流 OutputStreamWriter 字节输出流转成字符输出流 FilterWriter 过滤器字符输出流 BufferedWriter 缓冲字符输出流 PipedWriter 管道字符输出流 PrintWriter 格式化字符输出流 FileWriter 文件字符输出流 DataOutput 数据字节输入接口 实现 DataInputStream 数据字节输出流 PrintStream 格式化字节输出流 继承 ObjectOutput 对象字节输出接口
《Java程序设计实用教程(第4版)》
>>>16
>>>8
(3) 文件复制操作
【思考题8-2】 1. 从字节流读写2个字节表示short整数或 char字符等。 2. public static boolean equals(String filename1, String filename2) //比较两个文件内容是否相同
《Java程序设计实用教程(第4版)》
8.2.3 数据字节流
1.
public class DataInputStream extends FilterInputStream implements DataInput
{
DataInputStream数据字节输入流类
public DataInputStream(InputStream in) //构造方法 public final byte readByte() throws IOException public final short readShort() throws IOException public final int readInt() throws IOException //读取整型 public final long readLong() throws IOException public final float readFloat() throws IOException public final double readDouble() throws IOException public final char readChar() throws IOException //读取字符 public final boolean readBoolean() throws IOException
EOFException 文件结束异常类 FileNotFoundException 文件未找到异常类 ObjectStreamException 对象流异常类 NotSerializableException 未序列化异常类
《Java程序设计实用教程(第4版)》
8.2.2 文件字节流
1.
FileInputSream文件字节输入流类
第8章 输入/输出流和文件操作
• • • • 8.1 8.2 8.3 8.4 文件和流的概念 字节输入/输出流类 字符输入/输出流类 文件操作
《Java程序设计实用教程(第4版)》
第8章 输入/输出流和文件操作
内容和要求:
1. 理解流的概念;掌握字节流和字符流对类型文件和文 本文件进行顺序处理;熟悉在对象之间通过流传递数 据的方法;了解Java的标准输入/输出方法。 2. 掌握文件操作,掌握File类,熟悉文件过滤器、文件对 话框;了解RandomAccessFile随机存取文件类。 重点:各种字节流类,字符流类,File类。 难点:① 如何选择使用哪种字节流或字符流,掌握程序设 计方法,而不是死记硬背。 ② 操作系统的文件组织方式是树结构,递归算法。
>>>24 -128>>>24 0000 0000 0000 0000 0000 0000 1111 1111 写入 字节流 1111 1111 1111 1111 1111 1111 1000 0000 读取 255 0000 0000 0000 0000 0000 0000 1111 1111 <<8 65535 0000 0000 0000 0000 1111 1111 1111 1111 <<8 16777215 0000 0000 1111 1111 1111 1111 1111 1111 <<8 -128 1111 1111 1111 1111 1111 1111 1000 0000
{
}
【思考题8-1】① read()方法读取1个字节,返回值类 型是int,而不是byte,为什么? ② read()方法为什么能够将-1作为输入流结束标记, 《Java程序设计实用教程(第4版)》 -1不是int整数吗?
2. OutputStream抽象字节输出 流类
public abstract class OutputStream extends Object implements Closeable, Flushable { public abstract void write(int b) throws IOException; //写入1个字节,抽象方法 public void write(byte[] buffer) throws IOException //将字节数组写入字节流 public void flush() throws IOException//立即传输 public void close() throws IOException //关闭流 }
《Java程序设计实用教程(第4版)》
8.2.1 抽象字节流
1、InputStream抽象字节输入流类
public abstract class InputStream extends Object implements Closeable
public abstract int read() throws IOException; //返回读取的一个字节,抽象方法 public int read(byte[] buffer) throws IOException //从输入流中读取若干字节到指定缓冲区,返回实 际读取的字节数 public void close() throws IOException //关闭流
8.1.2 流的概念
1.
流的定义和作用
① ② ③
流的定义、方向性和读/写操作 流采用缓冲区技术 流的作用
程序 标准输入文本 标准输出文本 输入流 读取 文件 输出流 打印输出文本 写入 打印机 文件 显示器
2.
流的存在
键盘
《Java程序设计实用教程(第4版)》
3. Java的流类与文件类
1.
流类
【思考题8-1】① write(int)方法写入1个字节, 参数类型是int,而不是byte,为什么?
《Java程序设计实用教程(第4版)》
图8.2 各种字节输入/输出流 的读/写方法
FileInpu tStream 文件字节 输入流 字节输入流 文件
字节序列
m tStrea u p n I Piped 节输入流 管道字
字节 int value
m utStrea p t u O e l Fi 流 节输出 字 件 文 文件 字节输出流
字节序列
过滤
内存 PipedO u tp u tS tream 管道字 节输出 流
《Java程序设计实用教程(第4版)》
图8.3 使用流类和文件类出现 异常类的层次结构
Object ReflectiveOperationException Throwable Exception 异常类 java.io包 IOException 输入输出异常类 ClassNotFoundException 类未找到异常类
① ② ③ ④
InputStream OuputStream Reader Writer
抽象字节输入流类 抽象字节输出流类 抽象字符输入流类 抽象字符输出流类
2.
文件类
① ②
File 文件类 RandomAccessFile 随机存取文件类
《Java程序设计实用教程(第4版)》
3. Java的流类与文件类
继承
ObjectInput 对象字节输入接口
File 文件类 实现 RandomAccessFile 随机存取文件类 实现
《Java程序设计实用教程(第4版)》
8.2 字节输入/输出流类
8.2.1 抽象字节流 8.2.2 文件字节流 8.2.3 数据字节流 8.2.4 对象字节流 8.2.5 管道字节流
《Java程序设计实用教程(第4版)》
2. FileOutputStream文件字节 输出流类
public class FileOutputStream extends OutputStream { public FileOutputStream(String filename) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(String filename, boolean append) throws FileNotFoundException }
public class FileInputStream extends InputStream { public FileInputStream(String filename) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException }
【例8.1】 理解字节流。
(1) 从文件字节流中读写1个字节
1f „ 18 17 „ 10 f „ 8 7 „ 0 写入 字节流 1111 1111 读取 255 0000 0000 0000 0000 0000 0000 1111 1111 -1 1111 1111 1111 1111 1111 1111 1111 1111
【思考题8-2】向字节流写入1字节-256和256,再 各读取1字节,值为多少?为什么? 【答】0,因为-256 (1……1 00000000) ; 0,256 (0……01 00000000)
《Java程序设计实用教程(第4版)》
(2) 从字节流中读写4个字节作为 1f „ 18 17 „ 10 f „ 8 7 „ 0 1个int整数 -128 1111 1111 1111 1111 1111 1111 1000 0000
内存
过滤
Ou tp wri utStr te(v eam alu e) Outp 字节数组 utStre tream S t byte[] buffer w u p r ite(bu am In ) r e f f ffer) bu read( 基本数据类型 DataOutputStream DataInputStream 变量 writeInt(value) Ob readInt() int value jec m t trea rea Inpu S t u d O tS tr utp ct(obj) 对象 O b je eam t c je je ct( Object obj Ob riteOb ) w am tre S t u Inp read()
《Java程序设计实用教程(第4版)》
8.1 文件和流的概念 8.1.1 操作系统中的文件和目录概念
1.
2.
3.
文件与文件系统 目录结构与文件 检索 文件的逻辑结构
① ②
4.
文件的存取方法
① ②
顺序存取 随机存取 操作接口 应用程序接口
5.
文件的使用
① ②
流式文件 记录式文件
《Java程序设计实用教程(第4版)》
DataInput 数据字节输入接口 实现 DataInputStream 数据字节输入流 FileInputStream 文件字节输入流 FilterInputStream 过滤器字节输入流 ObjectInputStream 对象字节输入流 PipedInputStream 管道字节输入流 FileReader 文件字符输入流 InputStreamReader 字节输入流转成字符输入流 FilterReader 过滤器字符输入流 BufferedReader 缓冲字符输入流 PipedReader 管道字符输入流 Reader 字符输入流 Writer 字符输出流 InputStream 字节输入流 OutputStream 字节输出流 ng.Object FileOutputStream 文件字节输出流 FilterInputStream 过滤器字节输出流 ObjectOutputStream 对象字节输出流 PipedOutputStream 管道字节输出流 OutputStreamWriter 字节输出流转成字符输出流 FilterWriter 过滤器字符输出流 BufferedWriter 缓冲字符输出流 PipedWriter 管道字符输出流 PrintWriter 格式化字符输出流 FileWriter 文件字符输出流 DataOutput 数据字节输入接口 实现 DataInputStream 数据字节输出流 PrintStream 格式化字节输出流 继承 ObjectOutput 对象字节输出接口
《Java程序设计实用教程(第4版)》
>>>16
>>>8
(3) 文件复制操作
【思考题8-2】 1. 从字节流读写2个字节表示short整数或 char字符等。 2. public static boolean equals(String filename1, String filename2) //比较两个文件内容是否相同
《Java程序设计实用教程(第4版)》
8.2.3 数据字节流
1.
public class DataInputStream extends FilterInputStream implements DataInput
{
DataInputStream数据字节输入流类
public DataInputStream(InputStream in) //构造方法 public final byte readByte() throws IOException public final short readShort() throws IOException public final int readInt() throws IOException //读取整型 public final long readLong() throws IOException public final float readFloat() throws IOException public final double readDouble() throws IOException public final char readChar() throws IOException //读取字符 public final boolean readBoolean() throws IOException
EOFException 文件结束异常类 FileNotFoundException 文件未找到异常类 ObjectStreamException 对象流异常类 NotSerializableException 未序列化异常类
《Java程序设计实用教程(第4版)》
8.2.2 文件字节流
1.
FileInputSream文件字节输入流类
第8章 输入/输出流和文件操作
• • • • 8.1 8.2 8.3 8.4 文件和流的概念 字节输入/输出流类 字符输入/输出流类 文件操作
《Java程序设计实用教程(第4版)》
第8章 输入/输出流和文件操作
内容和要求:
1. 理解流的概念;掌握字节流和字符流对类型文件和文 本文件进行顺序处理;熟悉在对象之间通过流传递数 据的方法;了解Java的标准输入/输出方法。 2. 掌握文件操作,掌握File类,熟悉文件过滤器、文件对 话框;了解RandomAccessFile随机存取文件类。 重点:各种字节流类,字符流类,File类。 难点:① 如何选择使用哪种字节流或字符流,掌握程序设 计方法,而不是死记硬背。 ② 操作系统的文件组织方式是树结构,递归算法。
>>>24 -128>>>24 0000 0000 0000 0000 0000 0000 1111 1111 写入 字节流 1111 1111 1111 1111 1111 1111 1000 0000 读取 255 0000 0000 0000 0000 0000 0000 1111 1111 <<8 65535 0000 0000 0000 0000 1111 1111 1111 1111 <<8 16777215 0000 0000 1111 1111 1111 1111 1111 1111 <<8 -128 1111 1111 1111 1111 1111 1111 1000 0000
{
}
【思考题8-1】① read()方法读取1个字节,返回值类 型是int,而不是byte,为什么? ② read()方法为什么能够将-1作为输入流结束标记, 《Java程序设计实用教程(第4版)》 -1不是int整数吗?
2. OutputStream抽象字节输出 流类
public abstract class OutputStream extends Object implements Closeable, Flushable { public abstract void write(int b) throws IOException; //写入1个字节,抽象方法 public void write(byte[] buffer) throws IOException //将字节数组写入字节流 public void flush() throws IOException//立即传输 public void close() throws IOException //关闭流 }
《Java程序设计实用教程(第4版)》
8.2.1 抽象字节流
1、InputStream抽象字节输入流类
public abstract class InputStream extends Object implements Closeable
public abstract int read() throws IOException; //返回读取的一个字节,抽象方法 public int read(byte[] buffer) throws IOException //从输入流中读取若干字节到指定缓冲区,返回实 际读取的字节数 public void close() throws IOException //关闭流
8.1.2 流的概念
1.
流的定义和作用
① ② ③
流的定义、方向性和读/写操作 流采用缓冲区技术 流的作用
程序 标准输入文本 标准输出文本 输入流 读取 文件 输出流 打印输出文本 写入 打印机 文件 显示器
2.
流的存在
键盘
《Java程序设计实用教程(第4版)》
3. Java的流类与文件类
1.
流类
【思考题8-1】① write(int)方法写入1个字节, 参数类型是int,而不是byte,为什么?
《Java程序设计实用教程(第4版)》
图8.2 各种字节输入/输出流 的读/写方法
FileInpu tStream 文件字节 输入流 字节输入流 文件
字节序列
m tStrea u p n I Piped 节输入流 管道字
字节 int value
m utStrea p t u O e l Fi 流 节输出 字 件 文 文件 字节输出流
字节序列
过滤
内存 PipedO u tp u tS tream 管道字 节输出 流
《Java程序设计实用教程(第4版)》
图8.3 使用流类和文件类出现 异常类的层次结构
Object ReflectiveOperationException Throwable Exception 异常类 java.io包 IOException 输入输出异常类 ClassNotFoundException 类未找到异常类
① ② ③ ④
InputStream OuputStream Reader Writer
抽象字节输入流类 抽象字节输出流类 抽象字符输入流类 抽象字符输出流类
2.
文件类
① ②
File 文件类 RandomAccessFile 随机存取文件类
《Java程序设计实用教程(第4版)》
3. Java的流类与文件类
继承
ObjectInput 对象字节输入接口
File 文件类 实现 RandomAccessFile 随机存取文件类 实现
《Java程序设计实用教程(第4版)》
8.2 字节输入/输出流类
8.2.1 抽象字节流 8.2.2 文件字节流 8.2.3 数据字节流 8.2.4 对象字节流 8.2.5 管道字节流
《Java程序设计实用教程(第4版)》
2. FileOutputStream文件字节 输出流类
public class FileOutputStream extends OutputStream { public FileOutputStream(String filename) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(String filename, boolean append) throws FileNotFoundException }
public class FileInputStream extends InputStream { public FileInputStream(String filename) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException }