在Java编程中,File类是用于表示文件系统中的文件或目录的抽象表示。它提供了一种用于访问和操作文件系统的方式。本文将详细介绍Java中的File类,包括其属性、构造方法、常用方法,并提供相关的代码示例。
1. File类的属性
File类主要有以下属性:
- 路径:表示文件或目录在文件系统中的位置。
- 名称:表示文件或目录的名称。
- 父路径:表示文件或目录的父目录。
2. File类的构造方法
File类提供了多个构造方法来创建File对象,其中常用的包括:
File(String pathname)
:通过指定文件路径字符串创建File对象。File(String parent, String child)
:通过指定父路径和子路径字符串创建File对象。File(File parent, String child)
:通过指定父File对象和子路径字符串创建File对象。
3. File类的常用方法
File类提供了一系列常用方法来操作文件和目录,其中包括:
boolean exists()
:检查文件或目录是否存在。boolean isFile()
:检查File对象是否代表一个文件。boolean isDirectory()
:检查File对象是否代表一个目录。boolean createNewFile()
:创建一个新文件。boolean mkdir()
:创建一个新目录。boolean delete()
:删除文件或目录。String[] list()
:返回目录中的文件和子目录的名称数组。long lastModified()
:返回文件或目录的最后修改时间。long length()
:返回文件的大小(以字节为单位)。
4. 代码示例
1、观察 get 系列的特点和差异
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("..\\hello-world.txt"); // 并不要求该⽂件真实存System.out.println(file.getParent());System.out.println(file.getName());System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());}
}
运行结果
2、普通⽂件的创建、删除
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("hello-world.txt"); // 要求该⽂件不存在,才能看System.out.println(file.exists());System.out.println(file.isDirectory());System.out.println(file.isFile());System.out.println(file.createNewFile());System.out.println(file.exists());System.out.println(file.isDirectory());System.out.println(file.isFile());System.out.println(file.createNewFile());}
}
运行结果
3、普通⽂件的删除
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("some-file.txt"); // 要求该⽂件不存在,才能看到相System.out.println(file.exists());System.out.println(file.createNewFile());System.out.println(file.exists());System.out.println(file.delete());System.out.println(file.exists());}
}
运行结果
4、观察 deleteOnExit 的现象
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("some-file.txt"); // 要求该⽂件不存在,才能看到相System.out.println(file.exists());System.out.println(file.createNewFile());System.out.println(file.exists());file.deleteOnExit();System.out.println(file.exists());}
}
运行结果
程序运⾏结束后,⽂件还是被删除了
5、观察⽬录的创建
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File dir = new File("some-dir"); // 要求该⽬录不存在,才能看到相同的现System.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdir());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
运行结果
6、观察⽬录创建2
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 soSystem.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdir());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
运行结果
mkdir() 的时候,如果中间⽬录不存在,则⽆法创建成功; mkdirs() 可以解决这个问题。
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 soSystem.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdirs());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
运行结果
7、 观察⽂件重命名
import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("some-file.txt"); // 要求 some-file.txt 得存在File dest = new File("dest.txt"); // 要求 dest.txt 不存在System.out.println(file.exists());System.out.println(dest.exists());System.out.println(file.renameTo(dest));System.out.println(file.exists());System.out.println(dest.exists());}
}
运行结果