gpt4 book ai didi

java 深入列出目录并进行操作

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

我正在尝试在其中包含一些子文件夹的目录中进行一些文件编辑。但是我的java应用程序不会深入子文件夹,只在第一个子文件夹中进行操作,如下所示

文件夹1(作品)-folder11(作品)--文件(作品)--folder111(不起作用)-folder12(作品)--文件(作品)-folder13(作品)--文件(作品)

我做错了什么?

这是我的代码:

btnBasla.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

File dir= new File(Path2.toString());
File files[]=dir.listFiles();
for (File f: files) {
if (f.isDirectory()) {
try {
listDir(f.toString());
} catch (IOException e1) {
e1.printStackTrace();
}
} else {
if(f.getName().lastIndexOf('.')>0) {
int lastIndex = f.getName().lastIndexOf('.');
String str = f.getName().substring(lastIndex);
if(str.equals(".txt") || str.equals(".sub") || str.equals(".srt")) {
try {
String sonuc = islem.koddegıstır(f.getAbsolutePath());
textField.append(sonuc+"\n");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}

}
}
public void listDir (String dir) throws IOException{
File place = new File(dir);
if(place.isDirectory()){
File files[]= place.listFiles();
for (File f:files) {
if (f.isDirectory()) {
listDir(f.getName());
} else {
if(f.getName().lastIndexOf('.')>0) {
int lastIndex = f.getName().lastIndexOf('.');
String str = f.getName().substring(lastIndex);
if(str.equals(".txt") || str.equals(".sub") || str.equals(".srt")) {
String sonuc = islem.koddegıstır(f.getAbsolutePath());
textField.append(sonuc+"\n");
}
}
}
}
}
}
});

最佳答案

列出文件的函数出现问题。
我认为您应该使用此功能获取子文件夹中的所有文件。

public List<File> listFiles(String dirPath) {
List<File> files = new ArrayList<>();
File dir = new File(dirPath);

if(dir.isDirectory()) {
for(File file : dir.listFiles()) {
if(file.isDirectory()) files.addAll(listFiles(file));
else files.add(file);
}
}

return files;
}

如您所见,该函数递归地列出文件。

关于java 深入列出目录并进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964321/

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