如何创建多个文件夹并指定名称?

3
我有一份文件列表,这些文件的名称由一个类组和一个ID组成(例如:science_000000001.java)。
我能够获取所有文件的名称并将它们分割,以便将类组放入一个数组中,将ID放入另一个数组中。我已经限制了数组中不能有两个相同的值。
问题在于,我想要使用这些类组和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个回答

4

假设:

String filename = "science_000000001.java";

那么

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

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


如果您想创建目录,请使用以下命令:

fullPathFile.getParentFile().mkdirs();

非常感谢,这个问题困扰了我很长时间,现在完美解决了...干杯 :) - newSpringer

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");
            }

        }
    }
}

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接