如何防止我的方法创建名为 "null" 的文件夹

How to prevent my method from creating a folder named "null"

在我的程序中创建新文件夹时,我遇到了一个意外的小问题。这是我创建目录的方法:

public void createDirectory() {

    directory = new File("C:/Users/Lotix/Desktop/TestFolder/"
            + categoryName);
    boolean isDirectoryCreated = directory.mkdir();

    if (isDirectoryCreated) {

        System.out.println("Created new directory in: " + directory);

    } else if (directory.exists()) {

        System.out.println("Category already exists!");

    }

}

这是调用方法的监听器方法:

if (e.getSource() == addButton) {

            System.out.println("Add Button Clicked");
            botTextArea.setText("");
            botTextArea.append("Adding new category...");

            popUp.newCategoryPrompt();
            System.out.println(popUp.getNewCategoryName());             
            Category cat = new Category(popUp.getNewCategoryName(), "test tag" );
            cat.createDirectory();

        }

以及提示方法本身:

// Prompt to enter name of the new category
public void newCategoryPrompt() {

    JFrame newCatFrame = new JFrame();
    newCategoryName = JOptionPane.showInputDialog(newCatFrame,
            "Enter the name of new category");

}

具体问题是什么?

程序应该在现有目录中创建一个文件夹。但是,当用户决定关闭该提示而不给新文件夹命名时,它会创建一个名为 "null" 的文件夹,而不管 。我如何防止它发生?

我的临时解决方案(虽然非常草率)是让用户创建该文件夹(无论是否有意)并让它成为因为我的程序将打印出错误并且如果文件夹具有这样的错误则不会创建它该目录中的名称已存在。

编辑:当您按下取消键时会发生同样的事情。 EDIT2:添加了提示方法。

尝试

Category cat = new Category(popUp.getNewCategoryName(), "test tag" );
if(cat.getCategoryName() != null)
cat.createDirectory();

您需要将 getCategoryName() 更改为类别 class 中类别名称的 getter。

您可以试试这个来绕过空白值和空值:

Category cat = new Category(popUp.getNewCategoryName(), "test tag" );
if(cat.getCategoryName() != null && !"".equals(cat.getCategoryName())){
      cat.createDirectory();
}