第08章 输入输出流和文件操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
《Java程序设计实用教程(第4版)》
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版)》
பைடு நூலகம்
3. Java的流类与文件类
DataInput 数据字节输入接口 实现 DataInputStream 数据字节输入流 FileInputStream 文件字节输入流 FilterInputStream 过滤器字节输入流 ObjectInputStream 对象字节输入流 PipedInputStream 管道字节输入流 FileReader 文件字符输入流 InputStreamReader 字节输入流转成字符输入流 FilterReader 过滤器字符输入流 BufferedReader 缓冲字符输入流 PipedReader 管道字符输入流 Reader 字符输入流 Writer 字符输出流 InputStream 字节输入流 OutputStream 字节输出流 java.lang.Object FileOutputStream 文件字节输出流 FilterInputStream 过滤器字节输出流 ObjectOutputStream 对象字节输出流 PipedOutputStream 管道字节输出流 OutputStreamWriter 字节输出流转成字符输出流 FilterWriter 过滤器字符输出流 BufferedWriter 缓冲字符输出流 PipedWriter 管道字符输出流 PrintWriter 格式化字符输出流 FileWriter 文件字符输出流 DataOutput 数据字节输入接口 实现 DataInputStream 数据字节输出流 PrintStream 格式化字节输出流 继承 ObjectOutput 对象字节输出接口
EOFException 文件结束异常类 FileNotFoundException 文件未找到异常类 ObjectStreamException 对象流异常类 NotSerializableException 未序列化异常类
《Java程序设计实用教程(第4版)》
8.3 字符输入/输出流类
《Java程序设计实用教程(第4版)》
8.2.2 文件字节流
1.
FileInputSream文件字节输入流类
public class FileInputStream extends InputStream { public FileInputStream(String filename) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException }
图8.2 各种字节输入/输出流的读/写方法
Ou tp wri utStr te(v eam alu e) Outp 字节数组 u tS m Strea byte[] buffer write( tream Input ffer) buffer 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 je jec ct( Object obj Ob riteOb ) w am tre S t u Inp read()
继承
ObjectInput 对象字节输入接口
File 文件类 实现 RandomAccessFile 随机存取文件类 实现
《Java程序设计实用教程(第4版)》
8.2 字节输入/输出流类
8.2.1 抽象字节流 8.2.2 文件字节流
《Java程序设计实用教程(第4版)》
8.2.1 抽象字节流
第8章 输入/输出流和文件操作
• • • • 8.1 8.2 8.3 8.4 文件和流的概念 字节输入/输出流类 字符输入/输出流类 文件操作
本章讨论的类在java.io包中
《Java程序设计实用教程(第4版)》
第8章 输入/输出流和文件操作
内容和要求:
1. 理解流的概念;掌握字节流和字符流对类型文件和文 本文件进行顺序处理;熟悉在对象之间通过流传递数 据的方法;了解Java的标准输入/输出方法。 2. 掌握文件操作,掌握File类,熟悉文件过滤器、文件对 话框;了解RandomAccessFile随机存取文件类。 重点:各种字节流类,字符流类,File类。 难点:① 如何选择使用哪种字节流或字符流,掌握程序设 计方法,而不是死记硬背。 ② 操作系统的文件组织方式是树结构,递归算法。
《Java程序设计实用教程(第4版)》
8.1 文件和流的概念
8.1.1 操作系统中的文件和目录概念
文件与文件系统 文件 (file) 是信息的一种组织形式,是存储在外部 存储介质上的具有标志名的一组相关信息集合。 文件系统提供目录机制实现文件的“按名存取”。 2. 文件的逻辑结构:流式文件、记录式文件; 3. 文件的存取方式:顺序、随机、索引。
字节 int value
FileInpu tStream 文件字节 输入流 字节输入流 文件
字节序列
m utStrea p t u O e Fil 流 节输出 文件字 文件 字节输出流
字节序列
m Strea t u p n I Piped 节输入流 管道字
内存
过滤
过滤
内存 PipedO u tp u tS tream 管道字 节输出 流
1.
《Java程序设计实用教程(第4版)》
8.1.2 流的概念
流:一组有顺序的、有起点和终点的字节集合, 是对数据传输的总称或抽象。 2. 缓冲流:配备缓冲区的流,一次从缓冲区中读 写若干字节。 3. 流的存在
1.
程序 标准输入文本 键盘 文件 输入流 读取 输出流 打印输出文本 写入 打印机 文件 标准输出文本 显示器
>>>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
《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
《Java程序设计实用教程(第4版)》
>>>16
>>>8
(3) 文件复制操作
•
实现下面copyFile()方法,完成两个文件的 复制,以字节为单位进行读写操作。
public void copyFile(String fileNameIn, String fileNameOut);
《Java程序设计实用教程(第4版)》
《Java程序设计实用教程(第4版)》
图8.3 使用流类和文件类出现 异常类的层次结构
Object ReflectiveOperationException Throwable Exception 异常类 java.io包 IOException 输入输出异常类 ClassNotFoundException 类未找到异常类
8.3.1 抽象字符流 8.3.2 字节/字符转换流 8.3.3 文件字符流 8.3.4 缓冲字符流 8.3.5 格式化字符输出流 8.3.6 Java标准输入/输出
《Java程序设计实用教程(第4版)》
8.3.1 抽象字符流
1. Reader抽象字符输入流类 public abstract class Reader extends Object implements Readable, Closeable { public int read() throws IOException public int read(char cbuffer[]) throws IOException public abstract void close() throws IOException; }
FileOutputStream fout = new FileOutputStream(filename); DataOutputStream dout = new DataOutputStream(fout);//以文件字节流作为数据源 for (int i=0; i<values.length; i++) dout.writeInt(values[i]); //向字节输出流写入一个int整数,4个字节 dout.close(); //先关闭数据流 fout.close(); //再关闭文件流
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-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
《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 }
《Java程序设计实用教程(第4版)》
3. Java的流类与文件类
1.
流类
① ② ③ ④
InputStream OuputStream Reader Writer
抽象字节输入流类 抽象字节输出流类 抽象字符输入流类 抽象字符输出流类
2.
文件类
① ②
File 文件类 RandomAccessFile 随机存取文件类