How to create multiple directories given the folder names

我是研究僧i 提交于 2019-12-12 18:29:09

问题


I have a list of files, the names of these files are are made of a classgroup and an id (eg. science_000000001.java)

i am able to get the names of all the files and split them so i am putting the classgroups into one array and the ids in another.. i have it so that the arrays cant have two of the same values.

This is the problem, i want to create a directory with these classgroups and ids, an example:

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

but i cannot think of a way to loop through the arrays correctly to create the appropriate directories?

Also i am able to create the folders myself, its just getting the correct directories is the problem, does anyone have any ideas?


回答1:


Given:

String filename = "science_000000001.java";

Then

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

gives you the full path of the file, in this case science/000000001/science_000000001.java


If you want to create the directory, use this:

fullPathFile.getParentFile().mkdirs();



回答2:


The above answer is really good for creating new files with that naming convention. If you wanted to sort existing files into their relative classgroups and Ids you could use the following code:

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

        }
    }
}

Hope that helps.



来源:https://stackoverflow.com/questions/10739128/how-to-create-multiple-directories-given-the-folder-names

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!