Java的IO流和异常处理-v.ppt
《Java的IO流和异常处理-v.ppt》由会员分享,可在线阅读,更多相关《Java的IO流和异常处理-v.ppt(71页珍藏版)》请在三一办公上搜索。
1、4.1 I/O流概述4.2 System I/O类和Scanner类 4.2.1 System I/O类 4.2.2 Scanner类4.3 文件类 4.3.1 使用File类访问文件系统 4.3.2 随机文件读写4.4 字节级输入输出流 4.4.1 数据输入输出流 4.4.2 文件输入输出流 4.4.3 缓冲输入输出流 4.4.4 管道输入输出流 4.4.5 格式化输出流,4.5 字符级输入输出类 4.5.1 字符输入输出类 4.5.2 缓冲读写类 4.5.3 文件读写类 4.5.4 格式化写类4.6 对象序列化 4.6.1 对象输入流 4.6.2 对象输出流4.7 异常处理 4.7.1 J
2、ava中定义的异常 4.7.2 异常类的层次结构 4.7.3 捕获异常 4.7.4 异常处理的嵌套 4.7.5 自定义的异常和使用,第4章 Java的I/O流和异常处理,第4章 Java的I/O流和异常处理,学习导读 Java中常用I/O流、方法及其应用,包括:System类、Scanner类,字节流和字符流处理,以及对象序列化。Java中的异常处理机制及异常处理。,4.1 I/O流的概念,流是指流动的数据序列,可分为输入流和输出流。在程序设计语言中,流式输入输出是一种常见的输入输出方式。它是一个比文件更加广泛的概念。输入流将外部数据输入到计算机。例如从键盘,扫描仪,摄像头,网络等数据源输入数
3、据。输出流将计算机中的数据输出到外部设备。例如将要打印的信息发送到打印机,将计算的结果显示到输出设备上。流的特点:所有数据的传输都按照数据序列的顺序进行。每个数据依序被读入或写出,Java中采用类的方式实现I/O流。,Java I/O流来自 java.io包中的类,按照流处理的对象,可将输入输出流分为字节级输入输出流、字符级输入输出流和对象级输入输出流。输入输出流类层次如图所示:,InputStream和OutputStream是Java语言中最基本的两个输入输出类。其他所有字节输入输出流类都继承自这两个基类。这两个类都是抽象类,都继承自Object类,因而不能创建它们的实例,只能使用它们的子
4、类。,从输入流读取下一个字节,-1表示输入结束,阻塞方法 abstract int read();从输入流读取一组数据存入缓冲区b中。返回读取的字节个数,-1表示结束 int read(byte b);从输入流读取最多len字节数据存入缓冲区b中,并从数组b的第off个位置开始存放 int read(byte b,int off,int len);返回输入流中无需阻塞可直接读取字节个数 int available();从输入流中忽略n和字节的数据,返回实际忽略的字节个数 long skip(long n);关闭输入流close();,InputStream的主要方法,向输出流写入一个字节,写出
5、 字节为整数b的低字节,其高3个字节被忽略abstract void write(int b);把缓冲区b中的全部数据写入输出流 void write(byte b);把缓冲区b中从boff开始的len个字节的数据写入输出流 void write(byte b,int off,int len);刷新输出流,强制输出所有被缓存的字节 void flush();关闭输出流 void close();在实际应用中,常用InputStream和OutputStream类的引用指向它们的具体实现的子类对象。,OutputStream的方法,4.2 System I/O类和Scanner类System I
6、/O类称为标准输入输出类。在Java中标准的输入设备是键盘,标准的输出设备是终端或显示器。他们分别对应System类中的变量in,out和err。这三个类变量(对象类型)在System类中的声明如下:public static final InputStream in;public static final PrintStream out;public static final PrintStream err;,4.2 System I/O类和Scanner类 对于PrintStream类最常用的两个方法为:public void print();/输出一行字符串public void pri
7、ntln();/输出后并换行 例如,输入后立即输出这个数:byte bs=();(bs);,Scanner类 Scanner类是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。它使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白字符匹配。再使用不同的next方法将得到的标记转换为不同类型的值。例如,读入一个整数:Scanner sc=new Scanner(System.in);int i=sc.nextInt();,【例4.1】System I/O类和Scanner类,注意,输入流的结束程序运行结果?,4.3 文件类,1.使用File类 Java提供了用于处理有关文
8、件和目录访问的File类。用户通过该类可以实现新建文件、删除文件或目录,以及获取文件或目录属性的功能。File类方法如表所示:,例如,利用File对象创建文件和目录,注意,new操作一定成功吗?程序运行结果?,2.使用RandomAccessFile类 Java提供了RandomAccessFile类,它的实例能同时支持随机存取文件的读写操作,每读取一个字节,指针后移一个字节;写操作也在指针位置写字节,然后指针后移到所写字节之后。RandomAccessFile类有两个构造方法:RandomAccessFile(String filename,String mode);RandomAccess
9、File(File file,String mode);其中,mode值可以是:,RandomAccessFile类的方法,【例4.2】RandomAccessFile类,注意,写入了基本类型数据程序运行结果?,4.4 字节级输入输出流,1.数据输入输出流(DataInputStream,DataOutputStream)数据输入流,是从一个输入流中读取Java基本类型的数据。数据输出流,向一个输出流写入Java基本类型的数据。它们允许程序以与机器无关的方式读取Java基本类型数据,这些类型在文件中的表示方式与其在内存中的一样,无需转换。其构造方法和一般方法分别是:,2.文件输入输出流(Fil
10、eInputStream,FileOutputStream)FileInputStream类和类FileOutputStream类分别继承于InputStream类和OutputStream类。这两个类可以打开本地主机上的文件,并进行顺序的读/写。它们的构造方式是:通常与其他字节输入输出类结合使用。,【例4.3】DataInputStream/DataOutputStream类,通过类File对象或者一个表示文件名的字符串可以生成文件输入/输出流对象,同时文件被打开,然后进行文件读/写。,数据输入输出流与文件输入输出流结合举例,注意,写入了基本类型数据程序运行结果?,3.缓冲输入输出流(Buf
11、feredInputStream,BufferedOutputStream)当创建一个BufferedInputStream类的实例时,也就创建了一个内部缓冲数组,缺省使用32字节大小的缓冲区.当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区。当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输出流。使用方法flush()可以强制将缓冲区的内容全部写入输出流。,【例4.4】BufferedInputStream/BufferedOutputStream类,程序功能?,4.管道输入输出流(PipedInputStream,PipedOutputStream)这两个流
12、用于进程之间的通信。一个PipedInputStream必须连接一个PipedOutputStream,反之亦然。下面是这两个对象建立联系的方法:,管道用来把一个程序、线程或代码块的输出连接到另一个程序、线程或代码块的输入。管道输入流作为一个通信管道的接收端,管道输出流作为发送端。在使用管道之前,管道输出流和管道输入流必须进行连接。,5.格式化输出流(PrintStream)PrintStream具有在System文件句柄使用过的System.out所有的格式化性能。PrintStream有以下两个构造方法:PrintStream(OutputStream outputStream)Print
13、Stream(OutputStream outputStream,boolean flushOnNewline)注意,在上述这些字节输入输出流中,所读出的数据应该是由相应的写入类写入的。,面向字节级I/O编程的一般步骤(1)磁盘文件或字节数据 作为FileInputStream的构造方法的参数,实例化一个 FileInputStream对象。(2)FileInputStream对象作为DataInputStream的构造方法的参数。(3)然后就可以使用InputStream类中的方法,进行字节输入流的操作。例如,read()方法及其重载方法,available(),skip(),close()
14、等。或者用FileInputStream对象作为BufferedInputStream的构造方法的参数,然后使用read()等方法进行读操作。对于字节级输出流也具有相对应的类和方法。,在Java中,定义了专门用于处理字符数据输入输出的抽象类Reader和Writer类,它们与InputStream和Output-Stream类很相似,也有很多子类。1.Reader类和Writer类 它们是所有字符流的超类,它们是直接继承Object类的抽象类,可读写16位的字符流。类层次结构如图:,4.5 字符输入输出类,字节流不能直接操作Unicode字符。在Unicode字符中,一个汉字被看成一个字符。字
15、符流与字节流的区别在于其处理数据的方式。字节流按字节来处理数据,而文本数据可能采用各种不同的字符编码方式,可能是单字节字符,也可能是多字节字符。因而要借助于字符流来处理文本类信息。,BufferedReader从字符输入流中读取文本,该输入流的指向必须是一个Reader流(底层流),由该底层流将数据读入缓冲区,以后BufferReader类创建的流对象就从缓冲区中读取数据。其构造方法如下:public BufferedReader(Reader in);,2.缓冲读写类(BufferedReader,BufferedWriter),BufferedWriter类用来创建一个字符输出流。Buff
16、erWriter流将数据写入缓冲区,由底层流(像FileWriter流)写到最终目的地。其构造方法如下:public BufferedWriter(Writer out);问题,当创建这些对象时,其传入参数可以是什么类型?,2.缓冲读写类(BufferedReader,BufferedWriter),3.文件读写类(FileReader,FileWriter),FileReader类用来读取字符数据,其构造方法是:public FileReader(String filename)throws FileNotFoundException public FileReader(File file)
17、throws FileNotFoundException FileWriter类用来写入字符数据,其构造方法是:public FileWriter(String fileName)throws IOException public FileWriter(File file)throws IOException,3.文件读写类(FileReader,FileWriter),例如,FileReader fr=new FileReader(“temp.txt”);BufferReader br=new BufferReader(fr);String s=br.readLine();,【例4.5】Bu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java IO 异常 处理

链接地址:https://www.31ppt.com/p-6509897.html