第8章Java IO系统.ppt
《第8章Java IO系统.ppt》由会员分享,可在线阅读,更多相关《第8章Java IO系统.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 Java I/O 系统l8.1文件类l8.2JavaI/O结构l8.3使用流l8.4对象序列化l8.5小结8.1文件类 l8.1.1文件类Filel8.1.2文件过滤8.1.1文件类File-1l不管是程序员还是程序和文件系统打交道总是不可避免的,我们经常要用cd这个命令来更改当前目录,在Windows中用dir查看文件信息,在Unix系统中用ls查看文件信息。在Java语言中,用类File表示文件,File类可以处理各种文件操作。l和文件相关的一个重要概念是目录,Java的类File既可以表示文件,也可以表示目录。类File有3个常用构建器:File(StringfileName)F
2、ile(Stringdirectory,StringfileName)File(Filedirectory,StringfileName)8.1.1文件类File-2l第一个构建器通过文件名,可以是文件的完全路径名,也可以是相对路径名(相对于当前线程的工作目录),创建一个File对象。l第二个构建器同时指定了文件的目录和文件名,第三个构建器和第二个的区别在于使用一个File对象而不是String对象来表示文件目录。l下面我们通过例子来进行说明:8.1.1文件类File-3例8.1.1TheFile.javaimportjava.io.*;classTheFilepublicstaticvoid
3、main(Stringargs)FilediskC=newFile(C:/);FiletestFile=newFile(diskC,test);System.out.println(diskC.getAbsolutePath()+是否存在:+diskC.exists();System.out.println(testFile.getAbsolutePath()+是否存在:+testFile.exists();8.1.1文件类File-4l程序运行结果:C:是否存在:trueC:test是否存在:falsel既然调用File类构建器并不能创建一个文件,那么我们如何创建一个文件呢?一种方法是调用F
4、ile对象的方法createNewFile(),另一种更常用的方法是调用我们随后要介绍的类FileOutputStream的构建器,它还可以提供File类不具备的文件输出功能。lFile类的方法mkdir()和mkdirs()可以用来创建目录,这两个方法的区别在于mkdirs()可以创建目录路径中多层目录,即同时创建这个目录的父目录以及父目录的父目录,而mkdir()要求创建目录的父目录已存在。8.1.1文件类File-5lFile类大概有40个方法,下面我们列举其中一些较为常用的:booleancreateNewFile()如果File所表示的文件不存在则创建一个新的空文件,创建成功返回tr
5、ue,失败则返回false。booleandelete()删除File所表示的文件或目录,删除目录要求该目录为空,返回值表示删除动作是否成功。booleanmkdirs()创建一个目录。booleanrenameTo(Filedestination)对一个文件改名或移动。booleanisDirectory()检测File对象表示的是否为目录。publicbooleanisFile()检测File对象表示的是否为文件。booleancanRead()检测一个文件是否可读。8.1.1文件类File-6booleancanWrite()检测一个文件是否可写。booleanexists()检测一个文
6、件是否存在。Stringlist()获取File所表示的目录下的文件和目录列表。longlastModified()返回文件最好修改时间。时间为基于1970-01-0100:00:00的毫秒数。StringgetPath()返回相对路径名(包括文件名)。StringgetAbsolutePath()返回完全路径名。StringgetParent()如果File对象指定了父目录,则返回父目录名,否则返回一个null值。StringgetName()返回File对象所表示对象的文件名或目录名。8.1.1文件类File-7l下面在看一个File的应用实例,在Windows中我们可以使用DOS命令tr
7、ee显示一个目录结构,即显示一个目录下包含的文件和子目录,以及子目录下再包含的文件和子目录。(程序源代码请参见教材例(程序源代码请参见教材例8.1.3)l程序运行结果示例:程序运行结果示例:lC:java JTree c:windowslc:windowsl|+$hf_mig$l|+KB818529l|+RTMQFEl|-shdocvw.dlll|-urlmon.dlll|-spmsg.dlll|-spuninst.exel|+updatel|-eula.txtl.8.1.1文件类File-8l在这个例子中,我们调用递归方法list,来显示指定目录下的子目录和文件。程序首先使用File对象的l
8、ist()方法获得一个目录的所有成员列表,然后对每个目录成员构造一个File对象,调用其方法isDirectory()判断这个成员是否为目录,如果是,则进入该子目录,进一步获取子目录的成员列表。8.1.2文件过滤-1l在很多情况下我们可能要根据文件名对文件进行过滤,这个时候就需要调用文件过滤方法。publicStringlist(FilenameFilterfilter)其中FilenameFilter是一个接口,其中声明了一个抽象方法:booleanaccept(Filedir,Stringname);通过实现这个接口就可以进行文件名过滤。在文件系统中,文件扩展名代表着文件类型,下面我们就实
9、现一个例子,按文件扩展名进行文件名过滤。8.1.2文件过滤-2l(程序源代码请参见教材例8.1.4)l该程序运行结果显示当前目录下的java源文件:C:javaFileExtensionFilterAccess.javaEventListener.javaFileExtensionFilter.java.FilenameFilter是一个很简单的接口,在程序中为了增强代码的紧凑性,我们可以直接利用匿名内部内来实现这个接口8.2 Java I/O结构 程序中的数据流,是对现实世界中水流的一个形似的抽象。流用来顺序地读写数据信息,它是一个单向的数据通道,输入流从某个外部的数据源向程序输入数据,输出
10、流从程序向外部数据目标输出数据。位于java.io包中的类包含两组独立的类层次结构:一个用于读写字节,称为字节流;另一个用于读写字符,称为字符流。字节流与字符流的区别在于它们处理数据的方式。8.2.1字节流-1l输入流(InputStream)和输出流(OutputStream)构成字节流的祖先,这两个类直接继承了Object类。InputStream和OutputStream都是抽象类,InputStream为其他所有字节输入流的超类,而OutputStream为其他所有字节输出流的超类。下面为字节输入流的类层次结构。图8.2.1 字节输入流的类层次结构8.2.1字节流-2图8.2.2字节输
11、出流的类层次结构8.2.1字节流-3lInputStream有9个直接的子类,OutputSteam有5个直接的子类lInputStream的方法:publicabstractintread()throwsIOExceptionpublicintread(byteb)throwsIOExceptionpublicintread(byteb,intoff,intlen)throwsIOExceptionpublicintavailable()throwsIOExceptionpublicvoidmark(intreadlimit)publicvoidreset()throwsIOExceptio
12、npublicbooleanmarkSupported()publiclongskip(longn)throwsIOExceptionpublicvoidclose()throwsIOException8.2.1字节流-4lOutputStrem中定义了5个方法:publicabstractvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byteb)throwsIOExceptionpublicvoidwrite(byteb,intoff,intlen)throwsIOExceptionpublicvoidflush()throwsIOExcep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 Java IO系统 IO 系统
限制150内