用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:

一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名。

零个或更多字符串名称 的序列。

抽象路径名中的第一个名称是目录名,对于 Microsoft Windows UNC 路径名则是主机名。抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件。 抽象路径名没有前缀和名称序列。 

路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间用一个默认分隔符 隔开。默认名称分隔符由系统属性 file.separator 定义,可通过此类的公共静态字段 separator 和 separatorChar 使其可用。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者底层系统支持的任何其他名称分隔符来分隔其中的名称。

无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。

调用此类的 getParent() 方法可以获取抽象路径名的 路径名,它由路径名前缀以及路径名名称序列中的每个名称(最后一个除外)组成。对于任何具有绝对抽象路径名的 File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。例如,抽象路径名 "/usr" 表示的目录是路径名 "/usr/local/bin" 所表示目录的一个祖先。

下面解释下file类在使用过程中的一些常用方法:

isDirectory

public boolean isDirectory()测试此抽象路径名表示的文件是否是一个目录。 

返回:

当且仅当此抽象路径名表示的文件存在 是一个目录时,返回 true;否则返回 false

抛出:

SecurityException如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读访问

public String[] list()

返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 

如果此抽象路径名不表示一个目录,那么此方法将返回 null。否则返回一个字符串数组,每个数组元素对应目录中的每个文件或目录。表示目录本身及其父目录的名称不包括在结果中。每个字符串是一个文件名,而不是一条完整路径。

不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

返回:

字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果此抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null

public interface FilenameFilter

实现此接口的类实例可用于过滤器文件名。Abstract Window Toolkit 的文件对话框组件使用这些实例过滤 File 类的 list 方法中的目录清单。

boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中。 

参数:

dir- 被找到的文件所在的目录。

name- 文件的名称。

返回:

当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false

下面举个例子:列出目录下指定的文件,代码如下:

package xixi;

import java.io.File;

import java.io.FilenameFilter;

publicclass PPT1 {

publicstaticvoid main(String[] args) {

     File file =new File("C:\\Users\\xieds\\Desktop\\课件");

     System.out.println( file.isDirectory());

     G g=new G();

     String[]s=file.list(g);

     file.list(g);

for(String x:s){

 System.out.println(x);

     }

}

}

class G implements FilenameFilter{

publicboolean accept(File dir, String name) {

if(name.endsWith(".ppt")||name.endsWith(".pdf")){//判断文件后缀是不是.ppt.pdf结尾。

returntrue;

}else{

returnfalse;

}

}

}

运行结果:

true
01_JAVASE_开发概述.ppt
02_JAVASE_语法基础上.ppt
03_JAVASE_语法基础下.ppt
04_JAVASE面向对象上.ppt
05_JAVASE面向对象下.ppt
06JAVASE_常用类.ppt
07JAVA?容器.ppt
08JAVA异常.ppt
09JAVA IO.ppt
10JAVA多线程.ppt
11JAVA网络编程.ppt
12JAVA_GUI.ppt
java_Swing.ppt
java内部类.ppt
Java就业培训教程_张孝祥.pdf
Java数据结构和算法中文第二版.pdf
swing实例-计算器.ppt
[Java开发实战经典(名师讲坛)].李兴华.扫描版.pdf
[代码大全2中文版(完整清晰版)].pdf
~$03_JAVASE_语法基础下.ppt