gpt4 book ai didi

java - 递归删除类文件

转载 作者:行者123 更新时间:2023-12-02 04:52:06 24 4
gpt4 key购买 nike

所以我试图在 Unix 中创建一个程序,它将接受一个目录作为参数,然后递归地遍历,打开所有文件夹,查看所有文件,然后删除所有类文件。我认为我采取了正确的步骤,因为我得到了类似程序的代码并被告知使用它作为基础,但在测试我的程序时,我发现什么也没有发生。

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;

public class ClassFileDeleter {
public static void main(String[] args) throws ParseException {
String dirName = args[0];
deleteFile(dirName);
}

private static void deleteFile(String dirName) {
Path path = Paths.get(dirName);
File dir = path.toFile();

if(dir.exists()) {
File[] files = dir.listFiles();
if(dir.isDirectory()) {
for(File f:files) {
if(!f.isDirectory())
if(f.toString().endsWith(".class"))
System.out.println("yes");
else deleteFile(dirName + "/" + f.getName());

}}}
}}

我不知道自己应该做什么。我还没有尝试删除任何内容,因为我不想删除任何不是类文件的内容,因此我使用了一些虚拟代码,一旦程序找到类文件,这些代码应该打印"is"。然而,当我运行我的代码时,绝对没有任何反应。我相信我搜索类文件的方式(我们应该使用endsWith)或者我尝试使用递归来查看指定目录中的所有文件的方式存在问题。如果我能得到一些帮助,那就太好了。

最佳答案

我将从 isFile 检查开始(然后测试文件的扩展名,如果匹配则记录它),然后您可以递归地下降任何目录。比如,

private static void deleteFile(String dirName) {
File dir = new File(dirName);
if (dir.isFile()) {
if (dir.getName().endsWith(".class")) {
try {
System.out.println("Delete: " + dir.getCanonicalPath());
// dir.delete();
} catch (IOException e) {
e.printStackTrace();
}
}
} else if (dir.isDirectory()) {
File[] files = dir.listFiles();
for (File f : files) {
try {
deleteFile(f.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

关于java - 递归删除类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com