Java语言第八章JavaIO系统.ppt
《Java语言第八章JavaIO系统.ppt》由会员分享,可在线阅读,更多相关《Java语言第八章JavaIO系统.ppt(33页珍藏版)》请在装配图网上搜索。
第8章JavaI/O系统,8.1I/O概述8.2文件8.3字节流和字符流处理8.4标准流8.5其它常用的流8.6小结,8.1I/O概述,8.1.1流的概念8.1.2Java中的输入/输出流,8.1.1流的概念,大部分程序都需要输入/输出处理,比如从键盘读取数据、向屏幕中输出数据、从文件中读或者向文件中写数据、在一个网络连接上进行读写操作等。在Java中,把这些不同类型的输入、输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(DataStream),用统一的接口来表示,从而使程序设计简单明了。,8.1.2Java中的输入/输出流,流一般分为输入流(InputStream)和输出流(OutputStream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个输入流,而屏幕则只是一个输出流。在Java开发环境中,主要是由包java.io中提供的一系列的类和接口来实现输入/输出处理。标准输入/输出处理则是由包java.lang中提供的类来处理的,但这些类又都是从包java.io中的类继承而来。输入流:数据提供者,可从中读取数据出来输出流:数据接收者,可往其中写数据,8.2文件,8.2.1File类8.2.2文件输入输出流8.2.3读写文件中的基本数据类型8.2.4随机文件的读取,8.2.1File类,File(Stringpathname)Filef=newFile(“c:datatemp.dat”);Filef=newFile(“datatemp.dat”);Filef=newFile(“temp.dat”);File(Stringparent,Stringchild)Filef=newFile(“c:data”,“temp.dat”);Filef=newFile(“data”,“temp.dat”);File(Fileparent,Stringchild)Filef=newFile(newFile(“c:data”),“temp.dat”);Filef=newFile(newFile(“data”),“temp.dat”);,8.2.1File类,booleancanRead()booleancanWrite()booleansetReadOnly()booleanexists()booleanisDirectory()booleanisFile()booleanisHidden()longlastModified()booleansetLastModified(longtime)longlength(),Stringlist()Stringlist(FilenameFilterfilter)FilelistFiles()FilelistFiles(FileFilterfilter)FilelistFiles(FilenameFilterfilter)staticFilelistRoots()booleanmkdir()booleanmkdirs()(粉色的方法在JDK1.2之后才支持),8.2.1File类,booleancreateNewFile()staticFilecreateTempFile(Stringprefix,Stringsuffix)staticFilecreateTempFile(Stringprefix,Stringsuffix,Filedirectory)booleandelete()voiddeleteOnExit()booleanrenameTo(Filedest),8.2.1File类,StringgetName()FilegetParentFile()StringgetParent()StringgetPath()booleanisAbsolute()FilegetAbsoluteFile()StringgetAbsolutePath()FilegetCanonicalFile()StringgetCanonicalPath(),8.2.1File类,8.2.2文件输入输出流,FileInputStream类和FileOutputStream类的构造函数是创建一个输入输出的对象,通过引用该对象的读写方法,来完成对文件的输入输出操作。在构造函数中,需要指定与所创建的输入输出对象相连接的文件。当然,要构造一个FileInputStream对象,所连接的文件必须存在而且是可读的;构造一个FileOutputStream对象如果输出文件已经存在且可写,该文件内容会被新的输出所覆盖。,8.2.3读写文件中的基本数据类型,booleanreadBoolean()BytereadByte()CharreadChar()doublereadDouble()floatreadFloat()intreadInt()LongreadLong()shortreadShort()intreadUnsignedByte()intreadUnsignedshort()VoidreadFully(byteb)VoidreadFully(byteb,intoff,intlen)intskipBytes(intn)StringreadUTF(),DataInputStream类的读方法,8.2.3读写文件中的基本数据类型,voidwriteBoolean(Booleanb)voidwriteByte(intv)voidwriteBytes(Strings)voidwriteChar(intv)voidwriteChars(Strings)voidwriteDouble(doubled)voidwriteFloat(floatf)voidwriteInt(intv)voidwriteLong(intv)voidwriteShort(intv)voidwriteUTF(Stringstr),DataOutputStream类的写方法,在生成一个随机文件对象时,除了要指明文件对象和文件名之外,还需要指明访问文件的模式。RandomAccessFile(Filefile,Stringmode)RandomAccessFile(Stringname,Stringmode)mode的取值:“r”只读.任何写操作都将抛出IOException。“rw”读写.文件不存在时会创建该文件,文件存在时,原文件内容不变,通过写操作改变文件内容。“rws”同步读写.等同于读写,但是任何写操作的内容都被直接写入物理文件,包括文件内容和文件属性。“rwd”数据同步读写.等同于读写,但任何内容写操作都直接写到物理文件,但对文件属性内容的修改不是这样。,8.2.4随机文件的读取,对于FileInputStream/FileOutputStream、FileReader/FileWriter来说,它们的实例都是顺序访问流,即只能进行顺序读/写。而类RandomAccessFile则允许对文件内容同时完成读和写操作,它直接继承object,并且同时实现了接口DataInput和DataOutput,提供了支持随机文件操作的方法:readXXX()或writeXXX():如ReadInt(),ReadLine(),WriteChar(),WriteDouble()等。intskipBytes(intn):将指针乡下移动若干字节length():返回文件长度longgetFilePointer():返回指针当前位置voidseek(longpos):将指针调到所需位置,8.2.4随机文件的读取,Filef=newFile(“file.txt”);newRandomAccessFile(f,“r”);newRandomAccessFile(f,“rw”);newRandomAccessFile(“file1.txt”,“r”);newRandomAccessFile(“file2.txt”,“rw”);,8.2.4随机文件的读取,publicclassRandom_filepublicstaticvoidmain(Stringargs)intdata_arr=12,31,56,23,27,1,43,65,4,99;tryRandomAccessFilerandf=newRandomAccessFile(“temp.dat”);for(inti=0;i=0;i-)randf.seek(i*4L);/int数据占4个字节System.out.println(randf.readInt();randf.close();catch(IOExceptione)System.out.println(“Fileaccesserror:“+e);,8.2.4随机文件的读取,8.3字节流和字符流处理,8.3.1字节流8.3.2字符流8.3.3InputStreamReader类和OutputStreamWriter类8.3.4BufferedReader类和BufferedWriter类,8.3.1字节流,基本字节输入流InputStreampublicabstractintread()thowsIOExceptionpublicintread(byteb)throwsIOExceptionpublicintread(byteb,intoffset,intlength)throwsIOExceptionpublicintavailable()throwsIOExceptionpubliclongskip(longn)throwsIOException,8.3.2字符流,关闭流publicvoidclose()throwsIOException使用输入流中的标记publicmark(intreadlimit)publicvoidreset()publicbooleanmarkSupported(),8.3.2字符流,基本输入字符流Reader读取字符publicintread()throwsIOExceptionpublicintread(charchbuf,intoffset,intlength)throwsIOExceptionpublicintread(charchbuf)throwsIOException标记流publicBooleanmarkSupported()publicvoidmark(intreadAheadLimit)throwsIOExceptionpublicvoidreset()throwsIOException关闭流publicabstractvoidclose()throwsIOException,8.3.2字符流,基本输出字符流Writer向输出流写入字符publicvoidwrite(inta)throwsIOExceptionpublicvoidwrite(charchbuf)throwsIOExceptionpublicabstractvoidwrite(charchbuf,intoffset,intlength)throwsIOExceptionpublicvoidwrite(Stringstr)throwsIOExceptionpublicvoidwrite(Stringstr,intoffset,intlength)throwsIOException刷新publicabstractvoidflush()关闭流publicabstractvoidclose()throwsIOException,8.3.3InputStreamReader类和OutputStreamWriter类,InputStreamReader类的主要构造函数publicInputStreamReader(InputStreamin)publicInputStreamReader(IntputStreamin,Stringcode)throwsUnSupportedEncodingExceptionOutputStreamWriter类的两个主要的构造函数publicOutputStreamWriter(OutputStreamout)publicOutputStreamWriter(OutputStreamout,Stringcode)throwsUnSupportedEncodingExceptioon,8.3.3InputStreamReader类和OutputStreamWriter类,InputStreamReader类和OutputStreamWriter类的方法读入和写出字符获取当前编码方式关闭流,8.3.4BufferedReader类和BufferedWriter类,BufferReader类publicBufferedReader(Readerin)publicBufferedReader(Readerin,intbufSize)publicStringreadLine()throwsIOException,8.3.4BufferedReader类和BufferedWriter类,BufferWriter类publicBufferedWriter(Writerout)publicBufferedWriter(Writerout,intbufSize)publicvoidnewLine()throwsIOException,8.4标准流,标准输入标准输入System.in作为InputStream类的一个实例来实现,可以使用read()和skip(longn)两个方法。read()实现从输入中读一个字节,skip(longn)实现在输入中跳过n个字节。标准输出标准输出System.out是类System的数据成员out,它属于PrintStream类。PrintStream类和OutputStream类的关系是:OutputStream类是一个抽象类,FilterOutputStream是由抽象类OutputStream派生的,PrintStream类又是这个抽象类FilterOutputStream的一个子类。,8.5其它常用的流,管道流构造方法中连接PipedInputStream(PipedOutputStreamsend);PipedOutputStream(PipedInputStreamreceive)connect()方法进行连接类PipedInputStream中定义为:voidconnect(PipedOutputStreamsend);类PipedOutputStream中定义为:voidconnect(PipedInputStreamreceive);,8.5其它常用的流,内存的读/写ByteArrayInputStream和ByteArrayOutputStreamStringBufferInputStream和StringBufferOutputStream顺序输入流SequenceInputStream把几个输入流顺序连接起来。顺序输入流提供了把若干不同的流统一为同一个流的功能,使得程序变得更加简洁。,8.6小结,在这一章中我们只是介绍了I/O流的一些主要功能。另外,讲述了字节流和字符流的处理最后,介绍了其他的常用流,如管道流、顺序输入流等。,练习(1),1.简述Java流的概念,特点以及表示。2.试想想有哪些构造File类的方法。3.编写一个程序,完成文件路径和URL之间的转换。4.编写一个程序,确定文件名路径是文件还是目录。,练习(2),5.编写一个程序,将Fibonacci数列的前20项写入一个磁盘文件,要求每行只能输出5个数。6.如何通过InputStream、OutputStream和PrintStream类实现键盘输入和屏幕输出。7.编写程序,将一个给定文件中的英文单词和数据显示出来,其他的符号被看作是分隔符,每个单词或者数字占一行,分别统计单词和数字的个数,并输出到屏幕上。,下课!,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言 第八 JavaIO 系统
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文