Java程序输出与输入.ppt





《Java程序输出与输入.ppt》由会员分享,可在线阅读,更多相关《Java程序输出与输入.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第13章 输 入 与 输 出 输 入 与 输 出 13.1 基本输入基本输入/输出流类输出流类13.2 文件的输入文件的输入/输出输出第13章 输 入 与 输 出 13.1 基本输入基本输入/输出流类输出流类流是数据的有序序列,它既可以是未加工的原始二进制数据,也可以是经过一定编码处理后的符合某种规定格式的特定数据,如字节流序列、字符流序列等。数据的性质、格式不同,则对流的处理方法也不同,因此,Java的输入/输出类库中有不同的流类来对应不同性质的输入/输出流。在java.io包中基本输入/输出流类可按读写数据的不同类型分为两种:字节流和字符流。第13章 输 入 与 输 出 字节流用于读写字节
2、类型的数据(包括ASCII表中的字符)。字节流类可分为表示输入流的InputStream类及其子类,表示输出流的OutputStream类及其子类。字符流用于读写Unicode字符。它包括表示输入流的Reader类及其子类,表示输出流的Writer类及其子类。第13章 输 入 与 输 出 13.1.1 InputStream类类InputStream类是用于读取字节型数据的输入流类,该类的继承及派生结构如下:第13章 输 入 与 输 出 第13章 输 入 与 输 出 1InputStream类的成员方法类的成员方法表表13.1 InputStream类的成员方法类的成员方法成员方法说明publ
3、icabstractintread()throwsIOException自输入流中读取一个字节publicintread(byteb)throwsIOException将输入的数据存放在指定的字节数组b中publicintread(byteb,intoffset,intlen)throwsIOException自输入流中的offset位置开始读取len个字节并存放在指定的数组b中publicsynchronizedvoidreset()throwsIOException将读取位置移至输入流标记处publiclongskip(longn)throwsIOException从输入流中跳过n个字节p
4、ublicintavailable()throwsIOException返回输入流中的可用字节个数publicsynchronizedvoidmark(intreadlimit)在输入流当前位置加上标记publicbooleanmarkSupported()测试输入流是否支持标记(mark)publicvoidclose()throwsIOException关闭输入流,并释放占用的所有资源第13章 输 入 与 输 出 2DataInputStream类的成员方法类的成员方法由于InputStream是抽象类,不能直接创建对象。程序中创建的输入流一般是InputStream类的某个子类的对象,由
5、这个对象来实现与外设的连接。为此,下面介绍InputStream的子类DataInputStream类和BufferedInputStream类的使用方法。表13.2列出了DataInputStream类的成员方法。第13章 输 入 与 输 出 表表13.2 DataInputStream类的成员方法类的成员方法成员方法说明publicfinalintread(byteb)throwsIOException从输入流中将数据读取到数组b中public final int read(byte b,intoffset,intlen)throwsIOException从输入流中读取len个字节的数据到
6、数组b中,在数组中从offset位置开始存放publicfinalvoidreadFully(byteb)throwsIOException读取输入流中的所有数据到数组b中publicfinalvoidreadFully(byteb,intoffset,intlen)throwsIOException读取输入流中的所有数据到数组b中,在数组b中从offset位置开始存放len个字节publicfinalintskipBytes(intn)throwsIOException读操作跳过n个字节,返回真正跳过的字节数第13章 输 入 与 输 出 表表13.2 DataInputStream类的成员方
7、法类的成员方法成员方法说明publicfinalintread(byteb)throwsIOException从输入流中将数据读取到数组b中publicfinalintread(byteb,intoffset,intlen)throwsIOException从输入流中读取len个字节的数据到数组b中,在数组中从offset位置开始存放publicfinalvoidreadFully(byteb)throwsIOException读取输入流中的所有数据到数组b中publicfinalvoidreadFully(byteb,intoffset,intlen)throwsIOException读取输
8、入流中的所有数据到数组b中,在数组b中从offset位置开始存放len个字节publicfinalintskipBytes(intn)throwsIOException读操作跳过n个字节,返回真正跳过的字节数第13章 输 入 与 输 出 表表13.2 DataInputStream类的成员方法类的成员方法成员方法说明PublicfinalbooleanreadBoolean()throwsIOException读1个布尔值PublicfinalbytereadByte()throwsIOException读1个字节publicfinalintreadUnsignedByte()throwsIO
9、Exception读取一个8位无符号数publicfinalshortreadShort()throwsIOException读取16位短整型数publicfinalintreadUnsignedShort()throwsIOException读取16位无符号短整型数publicfinalcharreadChar()throwsIOException读1个16位字符第13章 输 入 与 输 出 表表13.2 DataInputStream类的成员方法类的成员方法publicfinalintreadInt()throwsIOException读1个32位整数数据publicfinallongre
10、adLong()throwsIOException读1个64位长整数数据publicfinalfloatreadFloat()throwsIOException读1个32位浮点数publicfinaldoublereadDouble()throwsIOException读1个64位双字长浮点数publicfinalStringreadLine()throwsIOException读1行字符publicfinalStringreadUTF()throwsIOException读UTF(UnicodeTextFormat)文本格式的字符串,返回值即是该字符串内容publicDataInputStr
11、eam(InputStreamin)在一个已经存在的输入流基础上构造一个过滤流DataInputStream第13章 输 入 与 输 出【示例程序c13_1.java】键盘输入数据的读取。importjava.io.*;publicclassc13_1publicstaticvoidmain(Stringargs)intcount;byteb=newbyte256;Stringstr;DataInputStreamdin=newDataInputStream(System.in);BufferedInputStreamin=newBufferedInputStream(din);try第13章
12、 输 入 与 输 出 if(in.markSupported()/判断当前输入流是否支持mark和reset方法System.out.println(支持mark);System.out.print(输入字符串,按Enter结束);in.mark(256);/在输入流的当前位置上设置标记,并保留256位/读键盘输入的数据存入b数组,该方法返回实际读入的字节数给countcount=in.read(b);System.out.println(读入字符数:+count);str=newString(b,0,count);/将b数组转换为字符串System.out.print(输入的字符串为:+st
13、r);第13章 输 入 与 输 出 in.reset();/重新回到标记处读取数据in.read(b,0,2);/读前两个字符str=newString(b,0,2);System.out.println(字符串的前两个:+str);in.reset();in.skip(count/2);in.read(b,0,count/2);str=newString(b,0,count/2);System.out.println(字符串的后半段:+str);elseSystem.out.println(不支持mark);第13章 输 入 与 输 出 din.close();in.close();catc
14、h(IOExceptionE)System.out.println(发生I/O错误!);第13章 输 入 与 输 出 运行结果如下:支持mark输入字符串,按Enter结束123456789读入字符数:11输入的字符串为:123456789字符串的前两个:12字符串的后半段:6789第13章 输 入 与 输 出 DataInputStream类的构造方法中指定的参数“System.in”是InputStream类的对象,表示要从键盘上读入数据。BufferedInputStream类称为缓冲输入流,其作用是为流加上缓冲区。当缓冲输入流对象读入数据时,首先将一批数据从外部设备送入缓冲区,然后缓冲
15、区流从缓冲区读数据,当缓冲区数据读完后再请求操作系统将数据成批送入缓冲区。有了缓冲区就可避免每读一个数据需要外部设备动作一次,从而提高了I/O的速度。BufferedInputStream类的构造方法中指定的参数是DataInputStream类的对象,这表示通过DataInputStream类的对象将键盘输入的数据输入到缓冲区中,然后,在程序中只需要用缓冲输入流对象的read()方法便可得到数据。本程序可以不用创建DataInputStream类的对象,而只需在BufferedInputStream类的构造方法的参数中指定“System.in”,即可得到相同结果。第13章 输 入 与 输 出
16、 13.1.2 OutputStream类类OutputStream类是用于输出字节型数据的输出流类,该类的继承及派生结构如下:java.io.ByteArrayOutputStreamjava.io.FilterOutputStreamjava.io.PrintStreamjava.io.DataOutputStream第13章 输 入 与 输 出 1OutputStream类成员方法类成员方法表表13.3 OutputStream类成员方法类成员方法成员方法说明publicabstractvoidwrite(intb)throwsIOException写一个字节publicvoidwrit
17、e(byteb)throwsIOException写一个字节数组publicvoidwrite(byteb,intoffset,intlen)throwsIOException将字节数组b中从offset位置开始的、长度为len个字节的数据写到输出流中publicvoidflush()throwsIOException写缓冲区内的所有数据publicvoidclose()throwsIOException关闭输出流,并释放占用的所有资源第13章 输 入 与 输 出 2DataOutputStream类成员方法类成员方法由于OutputStream是抽象类,程序中创建的输出流对象隶属于Outpu
18、tStream类的某个子类。表13.4列出了OutputStream的子类DataOutputStream类的成员方法。表表13.4 DataOutputStream类成员方法类成员方法成员方法说明publicsynchronizedvoidwrite(intb)throwsIOException向输出流写一个字节publicsynchronizedvoidwrite(byteb,intoffset,intlen)throwsIOException将字节数组b从offset位置开始的len个字节写到输出流publicfinalvoidwriteBoolean(booleanv)throwsIO
19、Exception将指定的布尔数据写到输出流publicfinalvoidwriteByte(intv)throwsIOException将指定的8位字节写到输出流第13章 输 入 与 输 出 表表13.4 DataOutputStream类成员方法类成员方法publicfinalvoidwriteShort(intv)throwsIOException将指定的16位短整数写到输出流publicfinalvoidwriteChar(intv)throwsIOException将指定的16位Unicode字符写到输出流publicfinalvoidwriteInt(intv)throwsIOEx
20、ception将指定的32位整数写到输出流publicfinalvoidwriteLong(longv)throwsIOException将指定的64位长整数写到输出流publicfinalvoidwriteFloat(floatv)throwsIOException将指定的32位实数写到输出流publicfinalvoidwriteDouble(doublev)throwsIOException将指定的64位双精度数写到输出流publicfinalvoidwriteBytes(Strings)throwsIOException将指定的字符串按字节数组写到输出流publicfinalvoidw
21、riteChars(Strings)throwsIOException将指定的字符串作为字符数组写到输出流publicfinalvoidwriteUTF(Stringstr)throwsIOException将指定的字符串按UTF格式的字符数组写到输出流publicfinalintsize()返回所写的字节数publicvoidflush()throwsIOException将缓冲区的所有字节写到输出流第13章 输 入 与 输 出【示例程序c13_2.java】从键盘读入字符串写入屏幕。importjava.io.*;publicclassc13_2publicstaticvoidmain(S
22、tringargs)intcount;byteb=newbyte256;Stringstr;BufferedInputStreamin=newBufferedInputStream(System.in);/键盘读入DataOutputStreamstdout=newDataOutputStream(System.out);/屏幕输出第13章 输 入 与 输 出 BufferedOutputStreamout=newBufferedOutputStream(stdout);PrintStreamp=newPrintStream(System.out);/屏幕输出tryif(in.markSupp
23、orted()p.println(支持mark);/使用PrintStream输出到屏幕p.print(输入字符串,请按Enter结束);in.mark(256);count=in.read(b);p.println(读入字符数:+count);p.print(输入的字符串为:);第13章 输 入 与 输 出/将数组b中从0位置开始的count长度的字节写到缓冲流缓冲区中out.write(b,0,count);out.flush();/将缓冲流缓冲区中的数据输出到屏幕上elseSystem.out.println(不支持mark);p.close();in.close();stdout.cl
24、ose();out.close();catch(IOExceptionE)System.out.println(发生I/O错误!);第13章 输 入 与 输 出 运行结果如下:支持mark输入字符串,请按Enter结束123456789读入字符数:11输入的字符串为:123456789BufferedInputStream类的构造方法中指定的参数“System.in”是InputStream类的对象,表示要从键盘上读入数据。第13章 输 入 与 输 出 DataOutputStream类的构造方法中指定的参数“System.out”是OutputStream类的对象,表示向屏幕输出数据。Buf
25、feredOutputStream类称为缓冲输出流,其功能是为流加上缓冲区。在程序运行中,通过引用write()方法不断地往缓冲区写数据,当缓冲区写满时或引用flush()方法时,系统自动将缓冲输出流的数据写到输出流中(本程序是将数据写到屏幕上)。程序中BufferedOutputStream类的构造方法中指定的参数是DataOutputStream类的对象,这表示通过DataOutputStream类的对象将程序中需要输出的数据输出到缓冲流缓冲区中,最后通过引用缓冲输出流对象的flush()方法便可方便地输出到屏幕上。第13章 输 入 与 输 出 PrintStream类是打印输出流,Jav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序 输出 输入

限制150内