您的位置:首页 > 其它

File类

2016-05-11 00:00 351 查看
一个File类的对象,表示了磁盘上的文件或目录

File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

File类直接处理文件和文件系统。

File类没有指定信息怎样从文件读取或向文件存储。

1.创建一个文件或目录

构造方法:

File(String directoryPath)

File(String directoryPath, String filename)

File(File dirObj, String filename)

这里,directoryPath是文件的路径名,filename 是文件名,dirObj 是一个指定目录的File 对象





1 package File;  2
3 import java.io.File;  4 import java.io.IOException;  5
6 public class File1 {  7
8     public static void main(String[] args) throws IOException  9  { 10         File file=new File("c:\\abc.txt"); 11
12         file.createNewFile();//创建文件,该路径的目录全部必须存在
13
14         File file2=new File("c:\\abc\\c"); 15
16         file2.mkdirs();//创建目录,该路径的上一级目录可以不存在 17
18         //separator(根)表示路径分隔符,即为\\或者/ 19         //创建文件在对应class盘符下
20         File file3 = new File(File.separator); 21
22         File file4 = new File(file, "test.txt"); 23
24  System.out.println(file4.createNewFile()); 25  } 26 }
3ff0


View Code

File f = new File("c:\\java.txt");// 这一句代码在LINUX系统下是不能使用的,因为Linux并没有盘符的概念。

这一句代码中,使用了“\\”。在java中“\”被作为转义字符。第一根反斜杠成功将第二根反斜杠转义。

这样做比较好:

File f = new File("c:/java.txt");


2.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.使用FilenameFilter

希望能够限制由list()方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list()的第二种形式(方法重载)String[ ] list(FilenameFilterFFObj)。该形式中,FFObj是一个实现FilenameFilter接口的类的对象。

FilenameFilter仅定义了一个方法,accept()。该方法被列表中的每个文件调用一次。

它的通常形式如下:

boolean accept(File directory, String filename)

当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept()方法返回true ,当这些文件没有包括在列表中时,accept()返回false。





1 import java.io.File;  2 import java.io.FilenameFilter;  3
4 public class FileTest7  5 {  6     public static void main(String[] args)  7  {  8         File file = new File("C:\\abc\\xyz\\hello");  9
10         //策略模式
11         String[] names = file.list(new FilenameFilter() 12  { 13             //第一个参数表示待测试文件对应的目录,第二个参数代表测试文件本身
14             public boolean accept(File dir, String name) 15  { 16                 if(name.endsWith(".txt")) 17  { 18                     return true; 19  } 20
21                 return false; 22  }; 23  }); 24
25         for(String name : names) 26  { 27  System.out.println(name); 28         }


View Code

4.listFiles()方法

File[ ] listFiles()

File[ ] listFiles(FilenameFilterFFObj)

File[ ] listFiles(FileFilterFObj)

上述三种形式以File对象数组的形式返回文件列表,而不是用字符串形式返回。第一种形式返回所有的文件,第二种形式返回满足指定FilenameFilter接口的文件。除了返回一个File 对

象数组,这两个listFiles()方法就像list()方法一样工作。

第三种listFiles()形式返回满足指定FileFilter的路径名的文件。FileFilter只定义了一个accept()方法,该方法被列表中的每个文件调用一次。

它的通常形式如下:

boolean accept(File path)

如果文件被包括在列表中(即与path参数匹配的文件),accept()方法返回true,如果不被包括,则返回false。





1 package io;  2
3 import java.io.File;  4
5 public class FileTest9  6 {  7     public static void deleteAll(File file)  8  {  9         if(file.isFile() || file.list().length == 0)//判断该目录是否为空
10  { 11  file.delete(); 12  } 13         else
14  { 15             File[] files = file.listFiles(); 16
17             for(File f : files) 18  { 19                 deleteAll(f);//删除里面的内容
20
21                 f.delete();//删除本身
22  } 23  } 24  } 25
26     public static void main(String[] args) 27  { 28         deleteAll(new File("c:\\ja")); 29  } 30 }


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: