File类

一个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 }
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
原文地址:https://www.cnblogs.com/daneres/p/4537424.html