对程序语言设计者来说,设计一个令人满意的I/O(输入输出)系统,是件极艰巨的任务——《Thinking in Java》
1、File类:一个File类的对象,表示了磁盘上的文件或目录;File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作;File类直接处理文件和文件系统;File类没有指定信息怎样从文件读取和向文件存储;File类描述了文件本身的属性;File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径;File类还可以浏览子目录层次结构。
java.io包中的File类提供了与具体平台无关的方式描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对他们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。File类的直接父类是Object类。
因为在java中“\”表示转义符,所以要想创建d:\com文件,路径中的“\”要写成“\\”,或者使用反斜线“/”,反斜线比较通用。
File类的构造方法:File(String directoryPath),File(String directoryPath, String filename),File(File dirObj, String filename);这里,directoryPath是文件的路径名,filename 是文件名,dirObj 是一个指定目录的File 对象
2、File的方法:isDirectory()、isFile()——判断是目录还是文件。创建目录mkDir(),mkDirs()——带s的方法,如果目录的父目录不存在,一并创建。publicString[]list()返回抽象路径名表示路径中的文件名和目录名(只是第一层)。
在进行文件操作时,常需要知道一个关于文件的信息。Jave的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()、boolean exists()、boolean canWrite()、boolean canRead()、boolean isFile()、boolean isDirectory()
3、目录是一个包含其他文件和路径列表的File 类,当你创建一个File 对象且它是目录时,isDirectory() 方法返回ture。这种情况下,可以调用该对象的list()方法来提取该目录内部其他文件和目录的列表。
4、使用FilenameFilter:希望能够限制由list()方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件;为达到这样的目的,必须使用list()的第二种形式(方法重载)。String[ ] list(FilenameFilter FFObj),该形式中,FFObj是一个实现FilenameFilter接口的类的对象
FilenameFilter仅定义了一个方法,accept()。该方法被列表中的每个文件调用一次。它的通常形式如下:boolean accept(File directory, String filename)
当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept()方法返回true ,当这些文件没有包括在列表中时,accept()返回false
5、递归(Recursion):就是方法调用自身。对于递归来说,一定有一个出口,让递归结束,只有这样才能保证不出现死循环。
斐波那契数列:
使用递归删除一个目录(File的delete方法只能删除一个空目录,如果不为空,要进入目录中,先删除其中内容)