黑马程序员技术交流社区

标题: File类相关知识 [打印本页]

作者: 马马耶夫岗    时间: 2016-4-22 22:36
标题: File类相关知识
课程目标
– 理解Java I/O系统
– 熟练使用java.io包中的相关类与接口进行I/O编程
–  掌握Java I/O 的设计原则与使用的设计模式
• 对程序语言设计者来说,设计一个令人满意的I/O(输入输出)系统,是件极艰巨的任务
• 摘自《Thinking in Java》
• 一个File类的对象,表示了磁盘上的文件或目录
• File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作
• File类直接处理文件和文件系统。
• File类没有指定信息怎样从文件读取或向文件存储
• File类描述了文件本身的属性
• File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径
• File类还可以浏览子目录层次结构
• java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。
• File类的直接父类是Object类。
• 下面的构造方法可以用来生成File 对象:
– File(String directoryPath)
File(String directoryPath, String filename)
File(File dirObj, String filename)
• 这里,directoryPath是文件的路径名,filename 是文件名,dirObj 是一个指定目录的File 对象
举例说明:
File myFile = new File(" myfile. txt");
File myDir = new File(" MyDocs");
File myFile = new File( myDir, "myfile.txt");
这些构造方法取决于访问文件的方式。例如,若在应用程序里只用一个文件,第一种创建文件的结构是最容易的。但若在同一目录里打开数个文件,则后种方法更好一些。
• 目录管理
– 目录操作的主要方法为:
– c public n boolean ) mkdir()  根据抽象路径名创建目录 。
– c public ] String[] ) list()  返回抽象路径名表示路径中的文件名和目录名 。
• 文件管理
– 在进行文件操作时,常需要知道一个关于文件的信息。Java的File类提供了方法来操纵文件和获得一个文件的信息。另外,File类还可以对目录和文件进行删除、属性修改等管理工作
• File 类定义了很多获取File对象标准属性的方法。例如getName( )返回文件名,getParent( )返回父目录名,exists( )在文件存在的情况下返回true,反之返回false。然而File类是不对称的。说它不对称,意思是虽然存在允许验证一个简单文件对象属性的很多方法,但是没有相应的方法来改变这些属性
•  File 类中的常用方法
String getName()
String getPath()
String getAbsolutePath()
String getParent()
boolean renameTo( File newName)
long length()
boolean delete()
boolean mkdir()
String[] list()
•  File 类中的常用方法
– boolean exists()
– boolean canWrite()
– boolean canRead()
– boolean isFile()
– boolean isDirectory()
• 目录是一个包含其他文件和路径列表的File类。
• 当你创建一个File 对象且它是目录时,isDirectory( ) 方法返回ture。这种情况下,可以调用该对象的list( )方法来提取该目录内部其他文件和目录的列表
• 示例程序
• 使用FilenameFilter
– 希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list( )的第二种形式 (方法重载)
– String[ ] list(FilenameFilter FFObj)
– 该形式中,FFObj是一个实现FilenameFilter
接口的类的对象
• FilenameFilter仅定义了一个方法,accept( )。该方法被列表中的每个文件调用一次。它的通常形式如下:
• boolean accept(File directory, Stringfilename)
• 当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept( )方法返回true ,当这些文件没有包括在列表中时,accept( )返回false
• 参见程序 FileTest11.java
• listFiles()方法
File[ ] listFiles( )
File[ ] listFiles(FilenameFilter FFObj)
File[ ] listFiles(FileFilter FObj)
• 上述三种形式以File对象数组的形式返回文件列表,而不是用字符串形式返回。第一种形式返回所有的文件,第二种形式返回满足指定FilenameFilter接口的文件。除了返回一个File 对象数组,这两个listFiles( )方法就像list( )方法一样工作
• 第三种listFiles( )形式返回满足指定FileFilter的路径名的文件。FileFilter只定义了一个 accept( )方法,该方法被列表中的每个文件调用一次。它的通常形式如下:
• boolean accept(File path)
• 如果文件被包括在列表中(即与path参数匹配的文件),accept( )方法返回true,如果不被包括,则返回false。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2