输入输出数据流.ppt
《输入输出数据流.ppt》由会员分享,可在线阅读,更多相关《输入输出数据流.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第12讲讲 输入输出数据流输入输出数据流o流的概念o流的分类o流的使用(以字节流为例)n标准输入/输出流n文件输入/输出流n过滤流o字符流的使用1本讲学习任务之一:o问题:如何编程从键盘输入数据?o任务:编写一个猜数游戏程序,程序生成一个10以内的整数,用户从键盘输入猜测的数,直到猜对为止。两个人轮流猜,每人猜3次,累计猜测次数少的胜。2流(流(Stream)的概念)的概念p流流是从是从源源到到目的地目的地的的有序字节序列有序字节序列,具有,具有先进先出先进先出的特征。的特征。p根据流与程序的关系将流分为根据流与程序的关系将流分为输入流输入流和和输出流输出流两类。两类。p程序从输入流程序从输
2、入流读取读取数据;向输出流数据;向输出流写出写出数据。数据。3流的概念o源n输入流的源可以是文件、标准输入(键盘)、其他外部输入设备或者其他输入流。o目的地n输出流的目的地可以是文件、标准输出(显示器)、其他外部输出设备或者其他输出流。oJava中输入输出是通过流来实现的。相关的类都在java.io包中。4流的分类o输入流/输出流n按流与程序的关系分。如前所述。o字节流/字符流n按流中处理的数据是以字节(8位)为单位还是以字符(16位)为单位分为字节流和字符流。nJava中字节流和字符流分属两个不同的体系。o节点流/过滤流n按流与原始数据载体(文件,设备)的关系分为节点流和过滤流。5流的分类(
3、续)o节点流(NodeStream):直接与原始数据存在的特定介质(如磁盘文件或其他外部设备、内存某区域或其他程序)打交道的流,在流的序列中离程序最远。o过滤流(FilterStream):使用其它的流作为输入源或输出目的地,对流中的数据提供进一步处理的流。其他的流可以是节点流,也可以是另一种过滤流。过滤流不能单独使用。o一个输入流链或输出流链中一定有且只有一个节点流;可以没有,也可以有多个过滤流。6字节流的层次结构过滤流结点流抽象类7字符流(读写器)的类层次结构CharArrayReaderStringReaderPipedReaderInputStreamReaderBufferedRea
4、derFilterReaderFileReaderLineNumberReaderPushbackReaderReaderCharArrayWriterStringWriterPipedWriterOutputStreamWriterBufferedWriterFilterWriterFileWriterWriterObjectPrinterWriter8InputStream类的常用方法o读一个字节,并返回该字节。未读到返回-1npublicintread()throwsIOExceptiono关闭流npublicvoidclose()throwsIOExceptiono将数据读入字节数组b
5、,返回所读的字节数nintread(byteb)throwsIOExceptiono将数据读入字节数组b,返回所读的字节数,offset和length指示byte中存放读入字节的位置。nintread(byteb,intoffset,intlength)throwsIOException9OutputStream的常用方法o写一个字节nvoidwrite(int)throwsIOExceptiono关闭输出流nvoidclose()throwsIOExceptiono强行将缓冲区的数据写到目的地。nvoidflush()throwsIOExceptiono写一个字节数组nvoidwrite(b
6、yteb)throwsIOExceptionnvoidwrite(byteb,intoffset,intlength)throwsIOException10标准输入输出流和错误流oSystem.out:n把输出送到缺省的显示(通常是显示器)oSystem.inn从标准输入获取输入(通常是键盘)oSystem.errn把错误信息送到缺省的显示oSystem是final类,in,out,err是System的静态成员变量,因此可以用System.in等形式直接使用。out的用法大家已熟知了,err的用法与out一样。11标准输入System.ino在System中,in的完整定义是:npublic
7、staticfinalInputStreamin;oin的主要方法:npublicintread()throwsIOExceptionnpublicintread(byteb)throwsIOExceptiono使用注意事项:n前者返回读入的一字节的数据,但返回的是int整型值,取值范围是0-255。n后者返回读入的字节数,读入的各字节保存在作为参数的字节型数组对象中。n执行read时,程序会等待用户的输入。输入完成后再接着执行后面的语句。12流的使用过程o输入/输出流的使用过程:n实例化一个输入/输出流对象n使用该输入/输出流对象的方法读入/写出数据n关闭该输入/输出流对象o注意事项输入/输
8、出流的方法会抛出异常,因此必须进行异常处理。标准输入/输出/错误流对象System.in,System.out、System.err始终存在,不需要实例化,也不需要关闭。13例:使用System.in实现键盘数据输入1.importjava.io.*;2.publicclassTestInput3.publicstaticvoidmain(Stringargs)4.5.try6.7.bytebArray=newbyte128;8.System.out.println(请输入一些东西:);9.System.in.read(bArray);10.Strings=newString(bArray,0
9、,bArray.length).trim();11.System.out.println(你输入的是:+s);12.13.catch(IOExceptionioe)14.System.out.println(ioe.toString();15.16.14本讲学习任务之二:o学会如何对文件进行读写操作o任务:编写一个程序,统计一个磁盘文本文件中的单词数。15从文件读数据:FileInputStreamoInputStream是抽象类,不能直接用newInputStream()构造实例。FileInputStream是InputStream的子类,可以生成实例。FileInputStream有三个
10、构造方法,最常用的构造方法如下:PublicFileInputStream(StringfileName)throwsFileNotFoundExceptionPublicFileInputStream(Filefile)throwsFileNotFoundExceptionofileName用来指定输入文件名及其路径,file是一个File对象16例:读出一个文本文件的内容并显示import java.io.*;class ReadFromFile public static void main(String args)InputStream in;/FileInputStream in;这
11、样声明也可以这样声明也可以tryin=new FileInputStream(test.txt);int aByte;aByte=in.read();while(aByte!=-1)System.out.print(char)aByte);aByte=in.read();in.close();catch(FileNotFoundException e)System.out.println(当前目录下文当前目录下文件件test.txt不存在!不存在!);catch(IOException e)System.out.println(发生输入输出错误!发生输入输出错误!);17向文件写数据:File
12、OutputStreamoOutputStream是抽象类,不能直接用newOutputStream()构造实例。FileOutputStream是OutputStream的子类,可以生成实例。FileOutputStream有5个构造方法,最常用的构造方法如下:PublicFileOutputStream(Stringname)throwsFileNotFoundException和PublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundExceptionoName用来指定输入文件名及其路径,append为true时
13、数据将添加到文件已有内容的末尾。18例题:使用FileOutputStream实现文件复制。import java.io.*;class CopyAFile public static void main(String args)InputStream in;OutputStream out;tryin=new FileInputStream(test.txt);out=new FileOutputStream(copyResult.txt);/out=new FileOutputStream(copyResult.txt,true);int aByte;aByte=in.read();whi
14、le(aByte!=-1)out.write(aByte);aByte=in.read();in.close();out.close();System.out.println(文件复制完毕。文件复制完毕。test.txt已经复制到已经复制到copyResult.txt中。中。);catch(FileNotFoundException e)System.out.println(当前目录下文件当前目录下文件test.txt不存在!不存在!);catch(IOException e)System.out.println(发生输入输出错误!发生输入输出错误!);19本讲学习任务之三:o学会使用过滤流(
15、缓冲流,数据流等)o任务:n使用缓冲流(BufferedInputStream和BufferedOutputStream)改写前面的文件读写程序。n编写一个程序,将10个整型数据写入文件,再读出来求和。20BufferedInputStreamo是过滤流。数据流从原始流成块读入数据,放在一个内部字节数组中。通过减少IO次数提高效率。o构造方法nBufferedInputStream(InputStreamin)nBufferedInputStream(InputStreamin,intbuffersize)o基本方法:nintread()throwsIOExceptionnintread(by
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入输出 数据流
限制150内