本文共 4315 字,大约阅读时间需要 14 分钟。
File类是Java中用于管理文件和目录的抽象路径名表示,提供文件和目录的创建、查找及删除等功能。它能够处理本地文件系统中的文件和目录路径,构造方法灵活,能够根据不同需求选择操作方式。
File类提供了多种构造方法,满足不同路径操作需求:
public File(String pathname)
:通过路径字符串创建File实例,适用于已知路径的情况。public File(String parent, String child)
:从父路径和子路径创建实例,操作相对路径。public File(File parent, String child)
:从父File对象和子路径创建新的实例,扩展了路径的维护方式。示例代码:
// 创建文件实例File file1 = new File("D:/aaa.txt");File file2 = new File("D:/aaa/bbb.txt");// 通过父路径和子路径创建File file3 = new File("D:/aaa", "bbb.txt");// 通过父File对象和子路径创建File parentDir = new File("D:/aaa");File file4 = new File(parentDir, "bbb.txt");
小贴士:File对象可以代表实际存在的文件或目录,路径是否存在不影响对象的创建。无论是文件还是目录,File类都能提供统一的操作接口。
public String getAbsolutePath()
:返回此File的绝对路径字符串。public String getPath()
:返回此File的路径字符串,包含当前工作目录。public String getName()
:返回文件或目录的名称。public long length()
:返回file表示的文件长度。示例代码:
File f = new File("D:/aaa/bbb.java");System.out.println("绝对路径:" + f.getAbsolutePath());System.out.println("当前路径:" + f.getPath());System.out.println("文件名:" + f.getName());System.out.println("文件大小:" + f.length() + "字节");
输出结果:
绝对路径:D:\aaa\bbb.java当前路径:D:\aaa\bbb.java文件名:bbb.java文件大小:636字节
示例代码:
// 绝对路径File f = new File("D:/bbb.java");System.out.println(f.getAbsolutePath());// 相对路径File f2 = new File("bbb.java");System.out.println(f2.getAbsolutePath());
输出结果:
D:\bbb.javaD:\idea_project_test4\bbb.java
public boolean exists()
:判断File表示的文件或目录是否存在。public boolean isDirectory()
:判断是否为目录。public boolean isFile()
:判断是否为文件。示例代码:
File f = new File("D:/aaa/bbb.java");File f2 = new File("D:/aaa");// 是否存在System.out.println("D:/aaa/bbb.java 是否存在:" + f.exists());System.out.println("D:/aaa 是否存在:" + f2.exists());// 是否是目录System.out.println("D:/aaa 文件?:" + f2.isFile());System.out.println("D:/aaa 目录?:" + f2.isDirectory());
输出结果:
D:\aaa\bbb.java 是否存在:trueD:\aaa 是否存在:trueD:\aaa 文件?:falseD:\aaa 目录?:true
public boolean createNewFile()
:在文件不存在时创建空文件。public boolean delete()
:删除文件或目录(目录必须为空)。public boolean mkdir()
:创建目录。public boolean mkdirs()
:创建目录及父目录(若不存在)。示例代码:
File f = new File("aaa.txt");// 创建文件System.out.println("是否存在:" + f.exists()); // falseSystem.out.println("是否创建:" + f.createNewFile()); // trueSystem.out.println("是否存在:" + f.exists()); // trueFile f2 = new File("newDir");// 创建目录System.out.println("是否存在:" + f2.exists()); // falseSystem.out.println("是否创建:" + f2.mkdir()); // trueSystem.out.println("是否存在:" + f2.exists()); // trueFile f3 = new File("newDira\\newDirb");System.out.println(f3.mkdir()); // falseFile f4 = new File("newDira\\newDirb");System.out.println(f4.mkdirs()); // true// 删除System.out.println(f.delete()); // trueSystem.out.println(f2.delete()); // trueSystem.out.println(f4.delete()); // false
提示:删除目录时,需确保目录为空。
public String[] list()
:返回目录中的文件和目录名称数组。public File[] listFiles()
:返回目录中的文件及其类型数组。示例代码:
File dir = new File("D:/java_code");String[] names = dir.list();for (String name : names) { System.out.println(name);}File[] files = dir.listFiles();for (File file : files) { System.out.println(file);}
输出示例结果:
aaabbbca.c...(此处具体输出取决于目录结构)
对于多层目录,递归方法最为方便:
示例代码:
File dir = new File("D:/ Files");printDir(dir);public static void printDir(File dir) { File[] files = dir.listFiles(); for (File file : files) { if (file.isFile()) { System.out.println("文件:" + file.getAbsolutePath()); } else { System.out.println("目录:" + file.getAbsolutePath()); printDir(file); // 递归调用 } }}
递归加法求和:
public class DiGuiDemo { public static void main(String[] args) { int num = 5; int sum = getSum(num); System.out.println("1~" + num + "的和为:" + sum); } public static int getSum(int num) { if (num == 1) { return 1; } return num + getSum(num - 1); }}
输出结果:1+2+3+4+5=15
递归阶乘:
public class DiGuiDemo { public static void main(String[] args) { int n = 3; int value = getValue(n); System.out.println("3的阶乘为:" + value); } public static int getValue(int n) { if (n == 1) { return 1; } return n * getValue(n - 1); }}
输出结果:3×2×1=6
通过合理使用File类的方法,可以有效管理文件和目录,灵活处理路径操作。与此同时,递归算法在编程中同样重要。无论是简单的累加求和,还是复杂的多级目录遍历,递归都能够提供灵活且简洁的解决方案。
转载地址:http://cyuoz.baihongyu.com/