-
什么是File类——File对象代表什么
File类代表一个特定的文件或者目录(文件夹),并提供了若干方法对该文件或目录(文件夹)进行操作。
-
File类构造方法——如何创建File对象
- File(String pathname)——通过路径名创建一个新 File 实例对象
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Users\\86158\\NTUSER.DAT");//文件
if(file.isFile()){//判断是否是文件
System.out.println("yes");
}
file = new File("D:\\Program_Files");//文件夹
if(file.isDirectory()) {//判断是否是文件夹
System.out.println("yes");
}
}
}
结果:
- File(String parent, String child)——根据父目录路径和子目录或文件路径创建一个新 File 实例
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Program_Files\\idea\\IntelliJ IDEA 2019.1.3\\","bin");
System.out.println(file.getPath());
}
}
结果:
注意不能随意拆,如不能把bin拆为b//in,因为没有b这个路径
- File(File parent, String child)——根据父目录路径File实例和子目录或文件路径创建一个新 File 实例
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File(new File("D:\\Program_Files\\idea\\IntelliJ IDEA 2019.1.3\\"),"bin");
System.out.println(file.getPath());
}
}
结果:
-
File类常用方法
- String getName():返回此对象表示的文件或目录最后一级文件夹名称
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Windows\\System32\\cmd.exe");
String name = file.getName();//返回文件名cmd.exe
System.out.println(name);
file = new File("C:\\Windows\\System32");
String name = file.getName();//返回目录最后一级文件夹名称System32
System.out.println(name);
}
}
- String getParent():返回此File对象的父目录(上一级)路径名;如果此路径名没有指定父目录,则返回 null
- File getParentFile():返回File对象所在的父目录File实例;如果File对象没有父目录,则返回 null
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Windows\\Web\\Wallpaper");
System.out.println(file.getParent());//输出C:\Windows\Web
file = new File("C:\\Windows\\Web\\Wallpaper");
file = file.getParentFile();
System.out.println(file.getName());//输出Web
System.out.println(file.getPath());//输出C:\Windows\Web
}
}
- String getPath() :返回File对象所表示的字符串路径。(举例可见上例最后一行)
- boolean renameTo(File dest):重新命名此File对象表示的文件,重命名成功返回true,否则返回false。
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\课件\\软件");
if(file.renameTo(new File("D:\\课件\\必要软件"))) {
System.out.println("重命名成功");
} else {
System.out.println("重命名失败");
}
}
}
结果:
- boolean mkdir():创建此File类对象指定的目录(文件夹),不包含父目录,即只能创建一级。创建成功回true,否则返回false;
import java.io.File;
public class Test {
public static void main(String[] args) {
if(new File("D:\\hao\\aaa\\bbb").mkdir()) {
System.out.println("Yes");
}else {
System.out.println("No");
}
if(new File("D:\\sun").mkdir()) {
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
结果:
- boolean mkdirs():创建此File对象指定的目录(文件夹),包括所有必需但不存在的父目录,创建成功返回true;否则返回false。
注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。
import java.io.File;
public class Test {
public static void main(String[] args) {
if(new File("D:\\hao\\aaa\\bbb").mkdirs()) {
System.out.println("Yes");
}
}
}
结果:
欲采用这种方法创建“C:\Program_Files\Java”目录,尽管Program_Files文件夹没有被创建,但依然可以成功。
- boolean createNewFile():如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false;如果所创建文件所在目录不存在则创建失败并出现IOException异常。
package file;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
try {
if(new File("D:\\a.docx").createNewFile()) {
System.out.println("Yes");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果:
注意:mkdir()和mkdirs()只能创建目录,不能创建文件;而createNewFile()只能创建文件,不能创建目录;
- boolean exists():判断文件或目录是否存在
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Windows\\System32\\cmd.exe");
if (file.exists()) {//判断cmd.exe文件是否存在
System.out.println("文件存在");
}
file = new File("C:\\Windows\\System32");
if (file.exists()) {//判断目录是否存在
System.out.println("目录存在");
}
}
}
- boolean delete():删除File类对象表示的目录或文件。如果该对象表示一个目录,则该目录必须为空才能删除;文件或目录删除成功返回true,否则false。
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
if(new File("D:\\a.docx").delete()) {
System.out.println("Yes");
}
if(new File("D:\\hao\\aaa\\bbb").delete()) {
System.out.println(111);
}
}
}
结果:可以看到
将D盘中a.docx文件删除了,但hao文件夹依然存在,不过里面的bbb文件夹被删除,所以只能删除最后那一级文件夹,只有当aaa文件夹为空时,才可删除aaa。
- boolean isDirectory():判断此File对象代表的路径表示是不是目录,只有File对象代表路径存在且是一个目录(文件夹)时才返回true,否则返回false。
- boolean isFile():判断此File对象代表的路径是否是一个标准文件,只有File对代表路径存在且是一个标准文件时才返回true,否则返回false。(举例见代码1)
- String[] list():返回由File对象对应目录所包含文件名或文件夹名组成的字符串数组。
- File[] listFiles():返回由当前File对象对应目录所包含文件路径或文件夹路径组成的File类型的数组。
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
String[] names = new File("D:\\Program_Files").list();
for (String name : names) {
System.out.println(name);
}
File[] files = new File("D:\\Program_Files").listFiles();
for (File file : files) {
System.out.println(file.getPath());
}
}
}
结果: ——>
-
File类属性
static separator:指定文件或目录路径时使用斜线或反斜线来写,但是考虑到跨平台,斜线反斜线最好使用File类的separator属性来表示:
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:"+File.separator+"Windows"+File.separator+"System32");
System.out.println(file.getPath());//输出C:\Windows\System32
}
}
-
绝对路径与相对路径
绝对路径:从盘符开始的路径。如:D:\Program_Files\idea
相对路径:从当前路径开始的路径。 如:D:\Program_Files相对于D:\Program_Files\idea上翻了一级,此时D:\Program_Files\idea就是相对路径
- ../ 代表一级上级目录(间隔一个目录)
可以看到目录上翻了一级
- ./ 代表同级目录
同级目录