Java中Path的硬编码部分

时间:2015-06-04 22:04:42

标签: java classpath

我有以下目录树

C:\folder1\folder2\SPECIALFolders1\folder3\file1.img
C:\folder1\folder2\SPECIALFolders2\folder3\file2.img
C:\folder1\folder2\SPECIALFolders3\folder3\file3.img
C:\folder1\folder2\SPECIALFolders4\folder3\file4.img
C:\folder1\folder2\SPECIALFolders5\folder3\file5.img

我想访问folder2,列出其中的所有目录(SpecialFolders),然后在将(folder3)添加到其路径时检索这些文件夹的路径

我这样做的原因是我希望稍后将此路径(路径)传递给方法以检索folder3中的最后修改文件。我知道有更简单的方法可以做到这一点,但这是一个非常特殊的情况。

我也试图在特定的时间范围内检索这些文件夹,所以我使用了一个while循环

        Date first = dateFormat.parse("2015-6-4");
        Calendar ystr = Calendar.getInstance();
        ystr.setTime(first);

        Date d = dateFormat.parse("2015-6-1");
        Calendar last = Calendar.getInstance();
        last.setTime(d);

        while(last.before(ystr)) 
        {
            //fullPath here = "C:\folder1\folder2\"
            File dir = (new File(fullPath));
            File[] files = dir.listFiles();

            for (File file : files) 
            {
                //Retrieve Directories only (skip files)
                if (file.isDirectory()) 
                { 
                    fullPath = file.getPath();
                    //last.add(Calendar.DATE, 1);
                    System.out.println("Loop " + fullPath);
                }
            }

        }
        fullPath += "\\folder3\\";
        return fullPath;

我的代码的问题是它只返回一个路径(这是循环中的最后一个路径) - 这是有意义的,但我想返回所有这样的路径

C:\folder1\folder2\SPECIALFolders1\folder3\
C:\folder1\folder2\SPECIALFolders2\folder3\
C:\folder1\folder2\SPECIALFolders3\folder3\
C:\folder1\folder2\SPECIALFolders4\folder3\
C:\folder1\folder2\SPECIALFolders5\folder3\

我提前感谢您的意见

1 个答案:

答案 0 :(得分:1)

而不是fullPath String,使用例如ArrayList<String>来存储所有路径。而不是:

fullPath = file.getPath();

使用:

yourArrayList.add(file.getPath());

您的方法将返回包含所有路径的ArrayList,您需要编写一个方法来从中检索所有路径。