1、File类:
测试代码1:
package filetest.com;
import java.io.File;
import java.io.IOException;
public class FileOperations {
public static void main(String[] args) {
// 创建新文件
File file = new File("example.txt");
try {
if (file.createNewFile()) {
System.out.println("文件 example.txt 创建成功");
} else {
System.out.println("文件 example.txt 已存在");
}
} catch (IOException e) {
e.printStackTrace();
}
// 创建单级目录的示例
File dir = new File("singleDir");
if (dir.mkdir()) {
System.out.println("单级目录 singleDir 创建成功");
} else {
System.out.println("单级目录 singleDir 已存在或无法创建");
}
// 创建多级目录的示例
File dirs = new File("multiLevelDir/level2/level3");
if (dirs.mkdirs()) {
System.out.println("多级目录 multiLevelDir/level2/level3 创建成功");
} else {
System.out.println("多级目录 multiLevelDir/level2/level3 已存在或无法创建");
}
}
}
运行结果如下:
测试代码2:
package filetest.com;
import java.io.File;
public class FileGetDemo {
public static void main(String[] args) {
// 创建一个File对象,指向一个存在的目录或文件
File file = new File("E:\\Test");
// 判断功能
System.out.println("Exists? " + file.exists());
System.out.println("Is directory? " + file.isDirectory());
System.out.println("Is file? " + file.isFile());
// 如果file是一个目录
if (file.isDirectory()) {
// 获取功能
System.out.println("Absolute Path: " + file.getAbsolutePath());
System.out.println("Path: " + file.getPath());
System.out.println("Name: " + file.getName());
// 列出目录中的文件和目录
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
System.out.println(f.getName());
}
} else {
System.out.println("Failed to list directory contents.");
}
// 删除功能
// boolean deleted = file.delete();
// System.out.println("Deleted? " + deleted);
} else if (file.isFile()) {
// 对于文件,通常不会调用list()或listFiles(),它们是针对目录的
// 但可以获取文件的路径和名称
System.out.println("File Absolute Path: " + file.getAbsolutePath());
System.out.println("File Path: " + file.getPath());
System.out.println("File Name: " + file.getName());
// 删除文件
boolean deleted = file.delete();
System.out.println("File Deleted? " + deleted);
}
}
}
3、递归调用:
测试代码;
package filetest.com;
public class FactorialExample {
public static void main(String[] args) {
// 调用递归函数计算20的阶乘,并输出结果
System.out.println("100的阶乘是: " + factorial(20));
}
// 递归函数计算阶乘
public static long factorial(int n) {
// 递归的出口:当n为0或1时,返回1(因为0的阶乘和1的阶乘都定义为1)
if (n <= 1) {
return 1;
}
// 递归步骤:n的阶乘等于n乘以(n-1)的阶乘
return n * factorial(n - 1);
}
}
运行结果如下:
4、递归遍历目录:
测试代码:
package filetest.com;
import java.io.File;
public class DirectoryTraverser {
public static void main(String[] args) {
// 假设路径是硬编码的,但在实际应用中,你可能希望从命令行参数中获取它
String directoryPath = "E:\\javaproject";
File directory = new File(directoryPath);
// 调用递归方法来遍历目录
traverseDirectory(directory);
}
/**
* 递归遍历目录
*
* @param directory 要遍历的目录
*/
public static void traverseDirectory(File directory) {
// 确保这是一个目录
if (directory.isDirectory()) {
// 获取目录下的所有文件和子目录
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
// 如果是文件,则打印其绝对路径
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
} else if (file.isDirectory()) {
// 如果是目录,则递归调用此方法
traverseDirectory(file);
}
}
}
} else {
// 如果给定的路径不是目录,可以抛出一个异常或打印一条消息
System.out.println(directory.getAbsolutePath() + " 不是一个目录");
}
}
}
运行结果如下: