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

标签 java file

我正在尝试在其中包含一些子文件夹的目录中进行一些文件编辑。但是我的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/

相关文章:

java - 如何打印从文本文件中按字母顺序读取的所有导演姓名或制片人姓名等

java - 检索 Ehcache 中的过期对象

c - C编程语言如何在读入数组之前嗅探二进制文件中的记录数?

file - 有没有办法批量输出磁盘上的文件大小?

java - 无法删除我在 Java 中重命名的目录中的文件?

java - 尝试使用带有偏移量的 PyCryptodome AES ECB 解密

java - 为什么下面的代码不起作用?

java - 如何从不包含 JTextArea 的方法附加 JTextArea?

java - 如何在java中保存文件

c++ - 在 C++ 中读取文件标签/属性