Java IO体系之File类浅析
一、File类介绍
位于java.io下的Java File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录,该类实现了Serializable和Comparable<File>接口,意味着该类支持序列化,并且实例对象可进行比较。博主把它归于java io体系中
File(文件)类这个名字有一定的误导性,我们可能会认为它指代的是文件,实际上却并非如此。它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称
File类不能用于文件的内容访问。
二、File类方法摘要:
构造方法摘要 | |
---|---|
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
|
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
|
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
|
File(URI uri)
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
可通过以下构造方法创建一个File对象。
通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。
File(File parent, String child);
通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String pathname)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child)
通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。
File(URI uri)
创建File对象成功后,可以使用以下列表中的方法操作文件。
序号 | 方法描述 |
---|---|
1 | public String getName() 返回由此抽象路径名表示的文件或目录的名称。 |
2 |
public String getParent()、 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null 。 |
3 |
public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null 。 |
4 |
public String getPath() 将此抽象路径名转换为一个路径名字符串。 |
5 |
public boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。 |
6 |
public String getAbsolutePath() 返回抽象路径名的绝对路径名字符串。 |
7 |
public boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。 |
8 |
public boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 |
9 |
public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。 |
10 |
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 |
11 |
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 |
12 |
public long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。 |
13 |
public long length() 返回由此抽象路径名表示的文件的长度。 |
14 |
public boolean createNewFile() throws IOException 当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。 |
15 |
public boolean delete() 删除此抽象路径名表示的文件或目录。 |
16 |
public void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 |
17 |
public String[] list() 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。 |
18 |
public String[] list(FilenameFilter filter) 返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。 |
19 |
public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。 |
20 |
public File[] listFiles(FileFilter filter) 返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。 |
21 |
public boolean mkdir() 创建此抽象路径名指定的目录。 |
22 |
public boolean mkdirs() 创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。 |
23 |
public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。 |
24 |
public boolean setLastModified(long time) 设置由此抽象路径名所指定的文件或目录的最后一次修改时间。 |
25 |
public boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。 |
26 |
public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 |
27 |
public static File createTempFile(String prefix, String suffix) throws IOException 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 |
28 |
public int compareTo(File pathname) 按字母顺序比较两个抽象路径名。 |
29 |
public int compareTo(Object o) 按字母顺序比较抽象路径名与给定对象。 |
30 |
public boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。 |
31 |
public String toString() 返回此抽象路径名的路径名字符串。 |
三、实例分析:
File类常用API实例:
1 package me.io.file;
2
3 import java.io.File;
4 import java.io.IOException;
5
6 public class FileDemo {
7
8 public static void main(String[] args) {
9 // 了解构造函数的情况 查帮助
10 File file = new File("E:\javaio\file");
11 // System.out.println(file.exists());
12 if (!file.exists())
13 file.mkdir(); // file.mkdirs()
14 else
15 file.delete();
16 // 是否是一个目录 如果是目录返回true,如果不是目录or目录不存在返回的是false
17 System.out.println(file.isDirectory());
18 // 是否是一个文件
19 System.out.println(file.isFile());
20
21 // File file2 = new File("e:\javaio\日记1.txt");
22 File file2 = new File("e:\javaio", "日记1.txt");
23 if (!file2.exists())
24 try {
25 file2.createNewFile();
26 } catch (IOException e) {
27 // TODO Auto-generated catch block
28 e.printStackTrace();
29 }
30 else
31 file2.delete();
32 // 常用的File对象的API
33 System.out.println(file);// file.toString()的内容
34 System.out.println(file.getAbsolutePath());
35 System.out.println(file.getName());
36 System.out.println(file2.getName());
37 System.out.println(file.getParent());
38 System.out.println(file2.getParent());
39 System.out.println(file.getParentFile().getAbsolutePath());
40 }
41 }
遍历目录:
1 /**
2 * 列出指定目录下(包括其子目录)的所有文件
3 *
4 * @param dir
5 */
6 public static void listDirectory(File dir) {
7 if (!dir.exists()) {
8 throw new IllegalArgumentException("目录" + dir + "不存在!");
9 }
10 if (!dir.isDirectory()) {
11 throw new IllegalArgumentException(dir + "不是目录!");
12 }
13 /*
14 * String[] fileNames = dir.list();//返回的是字符串数组 for (String fileName :
15 * fileNames) { System.out.println(dir + "\" +fileName); }
16 */
17 // 如果要列出子目录下的文件,就要构造File对象做递归操作
18 File[] files = dir.listFiles();
19 if (files != null && files.length > 0)
20 for (File file : files) {
21 if (file.isDirectory()) {
22 //递归调用
23 listDirectory(file);
24 } else {
25 System.out.println(file);
26 }
27 }
28 }
参考文章: