Java读取文件夹和子文件夹中的文件

鲁纳德

我正在制作一个将灰度图像更改为黑白图像的程序,该程序必须从文件夹和子文件夹读取所有.png文件,并将它们编辑后保存到新目录中。一切都按预期工作,但我进行了一些更改,该程序现在仅从具有图像的第一个文件夹或子文件夹中读取文件。

public class FindFiles {
public void find(String dir, String finDir){ 
    try {
        File folder = new File(dir);
        File[] listOfFiles = folder.listFiles();

        ChangeColor change = new ChangeColor();

        for(int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                change.ChangeC(dir, finDir, listOfFiles[i].getName());
            } else if (listOfFiles[i].isDirectory()) {
                File f = new File(finDir+"/"+listOfFiles[i].getName());
                if (!f.isDirectory()) {
                    new File(finDir+"/"+listOfFiles[i].getName()).mkdirs();
                }
                find(dir+"/"+listOfFiles[i].getName(),finDir+"/"+listOfFiles[i].getName());
            }
        }   
    } catch (IOException ex) {
        Logger.getLogger(FindFiles.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

感谢您的协助,以找出背后的原因。

布莱恩·托平

考虑先清理代码,然后查找错误:

public class FindFiles {
    public void find(File src, File target) {
        assert(src.isDirectory() && target.isDirectory());
        try {
            File[] fileList = src.listFiles();

            ChangeColor change = new ChangeColor();

            for (File file : fileList) {
                if (file.isFile()) {
                    change.ChangeC(file, target);
                } else if (file.isDirectory()) {
                    // create the File object for the directory name
                    File newDir = new File(target, file.getName());
                    newDir.mkdir();
                    find(file, newDir);
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(FindFiles.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

当a将执行操作时,您会产生很多不必要的Files并混合String和Files File

您需要更改的签名,ChangeColor.changeC()以接受File需要从源目录转换的File对象以及应以目标形式写入该对象的对象。该方法应确保第二个参数是我在此所做的目录-永远不要相信调用者!

我没有测试此代码,还有一些其他事情我会做不同的事情(例如异常处理),但是我不希望结构有太大区别,以便您可以更轻松地看到更改。

我在这里所做的是一种防御性编码形式花时间与奥卡姆剃刀获得代码下来到最低限度了前面选择在读取方法时有意义的变量名,而不是在顶部看起来不错的变量名(不要害怕不断更改它们,直到它易于阅读为止)。存在的错误将更容易发现,从长远来看,您将节省大量时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取文件夹和子文件夹中的所有文件-进度和大小

来自分类Dev

如何读取Bash Shell中多个文件夹和子文件夹中的文件

来自分类Dev

使用Python搜索(在文件夹和子文件夹中)并将文件读取到数据框列表中

来自分类Dev

删除文件夹和子文件夹中的某些文件类型和空文件夹

来自分类Dev

从应用程序安装文件夹的子文件夹中读取文件

来自分类Dev

从应用程序安装文件夹的子文件夹中读取文件

来自分类Dev

如何合并文件夹和子文件夹?

来自分类Dev

如何合并文件夹和子文件夹?

来自分类Dev

MVC创建“文件夹”和子文件夹

来自分类Dev

使用If语句文件夹和子文件夹

来自分类Dev

计算这些子文件夹中的子文件夹和.exe文件的数量

来自分类Dev

递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

来自分类Dev

在文件夹,子文件夹和多个文件中递归查找和重命名

来自分类Dev

删除文件夹“ tmp”和“缓存”中的文件和子文件夹

来自分类Dev

在datagridview中显示子文件和子文件夹

来自分类Dev

Java:从资源文件夹内文件夹中的txt文件读取

来自分类Dev

遍历文件夹和子文件夹中的文件名

来自分类Dev

删除文件夹和子文件夹中的所有隐藏文件

来自分类Dev

查找文件夹和子文件夹中的文件数?

来自分类Dev

使用python删除文件夹和子文件夹中的pdf文件?

来自分类Dev

遍历文件夹和子文件夹中的所有文件并获取创建日期

来自分类Dev

PowerShell-对文件夹和子文件夹中的文件进行操作

来自分类Dev

搜索文件夹和子文件夹python中的多个文件

来自分类Dev

查找文件夹和子文件夹中的文件数?

来自分类Dev

检查并删除文件夹和子文件夹中的特定文件

来自分类Dev

如何递归地仅复制文件夹和子文件夹中的文件?

来自分类Dev

从命令行计算文件夹和子文件夹中的文件

来自分类Dev

批。批量重命名文件夹和所有子文件夹中的文件

来自分类Dev

Gitignore用于文件夹和子文件夹中的所有文件

Related 相关文章

  1. 1

    读取文件夹和子文件夹中的所有文件-进度和大小

  2. 2

    如何读取Bash Shell中多个文件夹和子文件夹中的文件

  3. 3

    使用Python搜索(在文件夹和子文件夹中)并将文件读取到数据框列表中

  4. 4

    删除文件夹和子文件夹中的某些文件类型和空文件夹

  5. 5

    从应用程序安装文件夹的子文件夹中读取文件

  6. 6

    从应用程序安装文件夹的子文件夹中读取文件

  7. 7

    如何合并文件夹和子文件夹?

  8. 8

    如何合并文件夹和子文件夹?

  9. 9

    MVC创建“文件夹”和子文件夹

  10. 10

    使用If语句文件夹和子文件夹

  11. 11

    计算这些子文件夹中的子文件夹和.exe文件的数量

  12. 12

    递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

  13. 13

    在文件夹,子文件夹和多个文件中递归查找和重命名

  14. 14

    删除文件夹“ tmp”和“缓存”中的文件和子文件夹

  15. 15

    在datagridview中显示子文件和子文件夹

  16. 16

    Java:从资源文件夹内文件夹中的txt文件读取

  17. 17

    遍历文件夹和子文件夹中的文件名

  18. 18

    删除文件夹和子文件夹中的所有隐藏文件

  19. 19

    查找文件夹和子文件夹中的文件数?

  20. 20

    使用python删除文件夹和子文件夹中的pdf文件?

  21. 21

    遍历文件夹和子文件夹中的所有文件并获取创建日期

  22. 22

    PowerShell-对文件夹和子文件夹中的文件进行操作

  23. 23

    搜索文件夹和子文件夹python中的多个文件

  24. 24

    查找文件夹和子文件夹中的文件数?

  25. 25

    检查并删除文件夹和子文件夹中的特定文件

  26. 26

    如何递归地仅复制文件夹和子文件夹中的文件?

  27. 27

    从命令行计算文件夹和子文件夹中的文件

  28. 28

    批。批量重命名文件夹和所有子文件夹中的文件

  29. 29

    Gitignore用于文件夹和子文件夹中的所有文件

热门标签

归档