如何创建多个目录?

时间:2017-02-21 17:51:00

标签: java create-directory

我是编程新手,最近尝试制作一个简单的程序,用我想要的名字创建多个目录。它正在工作,但在开始时,它是在不问我的情况下添加第一个“数字”。在此之后,我可以制作尽可能多的文件夹。

public class Main {
public static void main(String args[]) throws IOException{
    Scanner sc = new Scanner(System.in);
    System.out.println("How many folders do you want?: ");
    int number_of_folders = sc.nextInt();
    String folderName = "";
    int i = 1;
    do {
        System.out.println("Folder nr. "+ i);
        folderName = sc.nextLine();
        try {
            Files.createDirectories(Paths.get("C:/new/"+folderName));
            i++;
        }catch(FileAlreadyExistsException e){
            System.err.println("Folder already exists");
        }
    }while(number_of_folders > i);
}
}

如果我选择制作5个文件夹,就会发生这样的事情:

1. How many folders do you want?: 
2. 5
3. Folder nr. 0
4. Folder nr. 1
5. //And only now I can name first folder nad it will be created.

如果这是一个愚蠢的问题,我会立即将其删除。提前谢谢。

2 个答案:

答案 0 :(得分:3)

这是因为此行中的sc.nextInt()

int number_of_folders = sc.nextInt();

不消耗最后一个换行符。

当你输入了你输入的目录数量时,它也有ASCII值(10)。当您读取nextInt时,尚未读取换行符,并且nextLine()首先收集该行,然后在下一次输入时正常继续。

答案 1 :(得分:0)

在这种情况下,您可以使用mkdir类的File部分:

String directoryName = sc.nextLine();
File newDir = new File("/file/root/"+directoryName);
if (!newDir.exists()) { //Don't try to make directories that already exist
    newDir.mkdir();
}

应该清楚如何将其合并到您的代码中。