如何根据文件夹名称创建多个目录

时间:2012-05-24 14:08:14

标签: java directory organization

我有一个文件列表,这些文件的名称是由一个类组和一个标识(eg. science_000000001.java)

组成的

我能够获取所有文件的名称并拆分它们,所以我将类组放入一个数组,将另外的数据放入另一个...我有它,以便数组不能有两个相同的值。

这是问题,我想创建一个包含这些classgroups和id的目录,例如:

science_000000001.java    would be in    science/000000001/science_000000001.java
science_000000002.java    would be in    science/000000002/science_000000002.java
  maths_000000001.java    would be in      maths/000000001/maths_000000001.java

但我想不出一种正确循环数组以创建相应目录的方法吗?

此外我能够自己创建文件夹,只是获取正确的目录是问题,有没有人有任何想法?

2 个答案:

答案 0 :(得分:3)

假设:

String filename = "science_000000001.java";

然后

File fullPathFile = new File(filename.replaceAll("(\\w+)_(\\d+).*", "$1/$2/$0"));

为您提供文件的完整路径,在本例中为science/000000001/science_000000001.java


如果要创建目录,请使用:

fullPathFile.getParentFile().mkdirs();

答案 1 :(得分:0)

上述答案非常适合使用该命名约定创建新文件。如果您想将现有文件排序到它们的相对类组和ID中,您可以使用以下代码:

public static void main(String[] args) {
    String dirPath = "D:\\temp\\";
    File dir = new File(dirPath);

    // Get Directory Listing
    File[] fileList = dir.listFiles();

    // Process each file
    for(int i=0; i < fileList.length; i++)
    {
        if(fileList[i].isFile()) {
            String fileName = fileList[i].getName();
            // Split at the file extension and the classgroup
            String[] fileParts = fileName.split("[_\\.]");
            System.out.println("One: " + fileParts[0] + ", Two: " + fileParts[1]);

            // Check directory exists
            File newDir = new File(dirPath + fileParts[0] + "\\" + fileParts[1]);
            if(!newDir.exists()) {
                // Create directory
                if(newDir.mkdirs()) {
                    System.out.println("Directory Created");
                }
            } 

            // Move file into directory
            if(fileList[i].renameTo(new File(dirPath + fileParts[0] + "\\" + fileParts[1] + "\\" + fileName))) {
                System.out.println("File Moved");
            }

        }
    }
}

希望有所帮助。