您好,欢迎访问三七文档
JAVA语言程序设计第十章输入与输出10.1输入输出类库输入和输出是程序与用户之间沟通的桥梁,程序与用户进行信息交互的重要手段。Java提供了专用于输入输出功能的包java.io,其中包含5个非常重要的类,所有与输入输出有关的类都继承了这5个类。它们是InputStream、OutputStream、Reader、Writer和File。Java的输入输出是以流(stream)的方式进行处理的。流是在计算机的输入、输出操作中流动的数据序列。Java按流的单位分有位流(字节流)和字符流;按流动方向分为输入流(inputstream)和输出流(outstream)。输入输出流程序输入流输出流键盘打印机显示器数据数据流、程序、外设之间的关系输入流类InputStream和输出流OutputStream是两个最基本的输入输出抽象类,用于处理字节流。Reader和Writer提供了以字符流读取和写入字节流的方法。分别由上述类对象生成相应的对象。InputStream类InputStream类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能。当java程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用执行该新建对象的特定方法,实现对相应外设的操作。InputStream子类对象继承InputStream类的如下方法read()方法、定位指针的方法、close()方法。1、read()方法Read方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。以二进制的方式读取,而不能分解、重组和理解数据,使之变换、恢复到原来的有意义的状态。定义如下:publicintread()每次执行时都从输入流的当前位置处读入一个字节的二进制数据,此数作为低字节,高字节配全零,合成为一个16位整型量返回,若输入流当前位置无数据返回-1。publicintread(byteb[])从输入流当前位置连续读入多个字节,保存到数组b中,返回输入字节个数。2、定位指针的方法每个流都有一个指针,每次读入数据都是从指针位置开始进行。流在刚被创建时,指针位于流的第一个数据,以后每读入一个字节,指针后移一个字节位置,指向未被读取的下一个数据。InputStream流中用来控制指针位置的方法有如下几个。publiclongskip(longn);将指针从当前位置向后跳n个字节publicvoidmark();在指针位置做一个标记publicvoidreset();将指针移到标记位置3、close()方法当输入流使用完毕后,可以调用close方法将其关闭,断开Java程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:publicvoidclose()InputStream子类的继承关系InputStreamFileInputStream对本地磁盘文件进行读写操作FilterInputStream是抽象类DataInputStream具备数据类型或格式转换BufferedInputStream具备缓冲功能OutputStream类OutputStream类中包含所有输出流都要使用的方法。当java程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用OutputStream类提供的方法将数据写入该外设中。OutputStream类是一个抽象类,不能直接创建OutputStream类对象,而应该创建它的某个子类的对象。子类继承的方法有:Write()方法、flush()方法和close()方法1、write()方法write()方法是向输出流写入数据的方法,有两种不同的方法,其共同点是只能逐字节的输出数据,以二进制的方式写入,而不能对数据进行格式变换或类型转换。定义形式如下:publicvoidwrite(intc);将参数c的低字节写入输出流publicvoidwrite(chararray[]);将字符数组array中全部字符顺序写入到输出流2、flush()方法Write()方法所写的数据并没有直接传输到外设上,而是暂时存放在流的缓冲区中,当缓冲区的数据积累到一定程度时,才统一执行一次向外设写的操作。但有时,缓冲区中的数据未满时就需要将其写到外设中,,此时应使用flush()方法强制清空缓冲区,并将缓冲区的现有数据写入外设。publicvoidflush();强制清空缓冲区3、Close()方法当输出流使用完毕后,可以调用close方法将其关闭,断开Java程序与外设数据源的连接,释放此连接所占用的资源。形式如下:publicvoidclose();OutputStream子类的继承关系OutputStreamFileOutputStream对本地磁盘文件进行写入操作FilterOutputStream是抽象类PrintEtream提供流的格式化输出功能DataOutputStream具备数据类型或格式转换BufferedOutputStream具备缓冲功能Reader类Reader类用来以字符方式从流中读入数据。Reader类中包含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能。Reader是一个抽象类,所以实际应用中创建的对象是Reader某个子类的对象,通过该子类对象与外接数据源连接。Reader子类继承Reader类的如下方法read()方法、定位指针方法和close()方法1、Read()方法Read()方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。publicintread();读一个字符,并将它作为int类型返回给调用方法的语句,若当前输入流没有数据则返回-1,如出现错误,抛出IOException类型异常publicintread(chararray[]);读多个字符,保存到array数组中,返回读入的字节数目2定位指针方法与InputStream流一样Reader类中用来控制指针位置的方法有如下几个。publiclongskip(longn);将指针从当前位置向后跳n个字节publicvoidmark();在指针位置做一个标记publicvoidreset();将指针移到标记位置ReaderBufferedReaderInputStreamReaderFileReader具备缓冲功能的字符输入流从字节输入流转换成字符输入流用于从文件中读取数据Reader子类的继承关系3、close()方法当输入流使用完毕后,可以调用close方法将其关闭,断开Java程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:publicvoidclose()Writer类Writer类用来以字符方式向输出流中写入数据。Writer类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能。Writer是一个抽象类,所以实际应用中创建的对象是Writer某个子类的对象,通过该子类对象与外接数据源连接。Writer子类对象继承Writer类的如下方法write()方法、flush()方法和close()方法Writer子类的继承关系WriterPrintWriter提供流的格式化输出功能BufferedWriter提供字符流输出缓冲功能OutputStreamWriter字符输出流转换成字节流FileWriter向文件中读入字符流publicvoidwrite(intc);将参数c对应的字符写入输出流publicvoidwrite(chararray[]);将字符数组array中的全部字符顺序写如输出流publicvoidflush();强制清空缓冲区publicvoidclose();关闭输出流,断开java程序与外设数据源的连接,释放所占有的系统资源10.2标准输入输出为了减少程序开发人员需要频繁地建立输入输出流对象的工作量,而应用标准的输入输出设备,java系统预先定义好3个流对象,分别表示标准输出设备、标准输入设备和标准错误设备。他们分别是System.out,System.in,System.errSystem类的所有属性都是静态static的,调用时以类名System为前缀。上述3个流对象均为静态属性。System.out和System.err属于PrintStream类对象对应外设为屏幕System.in属于InputStream类对象对应外设为键盘//从键盘输入字符,然后在屏幕上显示输入结果importjava.io.*;publicclassStandard10_1{publicstaticvoidmain(String[]args)throwsIOException{int/*char*/c;System.out.println(输入任一字符);c=/*(char)*/System.in.read();System.out.println(输入的字符是:+c);}}使用read()方法时,应该对IOException类异常进行捕获或抛出,由于IOException类在java.io包中定义因此程序第一句需要引用java.io包//例10_1中改为一次输入字符串,单个输出字符importjava.io.IOException;publicclassStandardIn10_2{publicstaticvoidmain(Stringargs[])throwsIOException{charc;System.out.println(“输入字符串”);c=(char)System.in.read();System.out.println(“输入的第一个字符是:”+c);c=(char)System.in.read();System.out.println(“输入的第二个字符是:”+c);c=(char)System.in.read();System.out.println(“输入的第三个字符是:”+c);c=(char)System.in.read();}}程序运行屏幕显示输入字符串输入Student只输出stu剩下4个字符待后继的read()继续读取//输出字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果Readline是BufferedReader的方法,从键盘输入字符串importjava.io.*;publicclassStandard10_3{publicstaticvoidmain(String[]args)throwsIOException{InputStreamReaderiin=newInputStreamReader(System.in);BufferedReaderbin=newBufferedReader(iin);Strings;floatf;inti=0;booleanb;System.out.println(输入任一字符串);s=bin.readLine();System.out.println(输入浮点数);f=Float.parseFloat(bin.readLine());System.out.println(输入);i=Integer.parseInt(bin.readLine());System.out.println(输入);b=newBoolean(bin.readLine()).booleanValue();System.out.println(输入的字符串:+s);System.out.println(输入的浮点数:+f);System.out.println(输入的整数:+i);System.out.println(输入的布尔量:+b);}}输入任一字符串abc输入浮点数234.5输入整数34输入布尔量true输入的字符串:abc输入的浮点数:234.5输入的整数:34输入的布尔量:true输出输入方法返回值类型返回值Boolean(“tru
本文标题:第十章输入与输出
链接地址:https://www.777doc.com/doc-4075136 .html