资源描述
输入输出处理,第八章,2,回顾,异常的基本概念异常的处理异常类的层次结构创建自己的异常,3,目标,输入/输出流的概念和类层次结构主要字节流的定义和使用主要字符流的定义和使用文件管理以及文件操作对象串行化的概念和实现方法了解其他常用流的定义和使用,4,8.1.1输入/输出流的概念,数据流:是指在计算机的输入输出之间运动的数据序列。输入输出是相对程序来说的,程序扮演两个角色:源和目的。输入流:代表从外设流入程序的数据序列;输出流:代表从程序流向外设的数据序列。字节流:在输入输出过程中以字节为单位。字符流:在输入输出过程中以字符为单位。,5,8.1.2输入输出类层次,6,8.1.3标准输入输出,1.标准输入publicstaticfinalInputStreamin使用read()和skip(longn)方法读取。2.标准输出publicstaticfinalPrintStreamout使用print()和println()来输出。3.标准错误输出publicstaticfinalPrintStreamerr,7,8.2.1文件输入输出字节流,(1)创建FileInputStream类对象;(2)读取文件信息;(3)创建FileOutputStream类对象;(4)向输出流写信息:voidwrite(intb);voidwrite(byteb);voidwrite(byteb,intoff,intlen);(5)关闭FileInputStream流。,8,8.2.2过滤流,1、DataInputStream,DataOutputStream1使用数据流方法:(1)用前面的方法建立字节文件流对象;(2)基于字节文件流对象建立数据文件流对象;(3)用此对象方法对基本类型的数据进行输入/输出。2创建数据流的构造方法。2、BufferedInputStream,BufferedOutputStream(1)创建流对象BufferedOutputStream;(2)用flush()方法更新流;(3)创建BufferedInputStream对象;(4)缓冲流类的应用。3、PrintStream类,9,8.3.1输入输出字符流,常用的是InputStreamReader和OutputStreamWriter1.其构造方法:InputStreamReader(InputStreamin);InputStreamReader(InputStreamin,Stringenc);OutputStreamWriter(OutputStreamout);OutputStreamWriter(OutputStreamout,Stringenc);2.读写方法3.其他方法StringgetEncoding()publicvoidcolse(),10,8.3.2文件输入输出字符流,FileReader和FileWriter是InputStreamReader和OutputStreamWriter的子类。构造方法各有两种。FileReader(Filef)FileReader(Stringfn)FileWriter(Filef)FileWriter(Stringfn)常用方法:read();read(charbuffer);write(Stringstr);write(charbuffer);,11,8.3.3缓冲字符流,BufferedReader和BufferedWriter构造方法:BufferedReader(Readerin)BufferedReader(Readerin,intsize)BufferedWriter(Writerout)BufferedWriter(Writerout,intsize)常用方法:readLine();newLine();,12,8.3.4打印输出字符流,PrintWriter提供字符流的输出处理。PrintWriter(OutputStreamout)PrintWriter(OutputStreamout,Booleanautoflush)PrintWriter(Writerout)PrintWriter(Writerout,Booleanautoflush),13,8.4.1文件描述,在java.io包中的File类提供了平台无关的方式来描述目录和文件对象的属性。提供了很多的方法用来获取路径、目录和文件的相关信息。目录管理文件管理1.文件的生成2.文件名的处理3.文件属性测试4.文件信息处理,14,8.4.2文件的顺序访问,1、引入“java.io”包,importjava.io.*;2、根据数据源和输入输出的任务建立字节或字符流。3、若需要对字节或字符信息组织加工位数据在已建字节或字符流对象上建立数据流或缓冲流。4、用输入输出流对象的成员方法进行读/写操作,需要时可设置指针位置。5、关闭流对象。2-5要考虑异常处理。,15,8.4.3文件的随机访问,使用下列构造方法创建流:RandomAccessFile(Stringname,Stringmode);RandomAccessFile(Filename,Stringmode);mode的取值为”r”或”rw”,16,8.5.1串行化的概念和目的,对象能记录自己状态以便将来再恢复的能力。目的:(1)支持Java的对象持续性。(2)支持对象的远程调用。(3)严格遵守Java的对象模型,对象的串行化状态中应存有所有的关于种类的安全特性的信息。(4)允许对象定义自身的格式。(5)尽量保持对象串行化的简单扼要,但可以进行扩展和定制。,17,8.5.2串行化方法,1.定义一个可串行化的对象使此对象所属的类实现Serializable接口。2.输出数据进行保存使用输入输出流读取和保存对象的基本数据。,18,8.5.3串行化注意事项,1.串行化能保存的对象2.transient关键字3.安全问题,19,8.6其他常用流,1、管道流PipedInputStream和PipedOutputStream用于在不同的线程间直接传送数据。2、内存的访问ByteArrayInputStream和ByteArrayOutputStream为提高安全而禁止任何程序直接对内存进行操作。3、顺序流SequenceInputStream和SequenceOutputStream同一若干不同的流。,20,总结,1、掌握输入输出的基本概念2、主要的字节流的使用。3、主要的字符流的使用。4、文件的顺序访问。5、文件的随机访问。,
展开阅读全文