Проверьте, существует ли папка, и если да, добавьте «Новую папку 2»

#java #ajax

#java #ajax

Вопрос:

У меня есть веб-приложение, которое я унаследовал. Я новичок в Java, так что не избивайте меня слишком сильно. У меня есть следующий метод добавления новых папок на страницу вложения. Пользователь может создавать новые папки на странице и переименовывать, но как проверить, существует ли уже «Новая папка», и если да, создайте «Новую папку (2)» или «Новую папку (3)» и т.д…

Вот мой метод из моего сервлета вложений:

   protected void newFolderAction(HttpServletRequest request, HttpServletResponse response, User user, String folderId) throws UnsupportedEncodingException,
                IOException {
    String key = request.getParameter("key");
    String value = request.getParameter("value");
    Attachment parent = AttachmentRepository.read(UUID.fromString(key));
    String path = parent.getPath();

    logger.debug("newFolder: key="   key   " value="   value   " path="   path);
    if (AttachmentRepository.read(path   "New Folder/") == null) {
        long size = 0L;
        boolean isFolder = true;
        boolean isPicture = false;
        UUID attachmentId = UUID.randomUUID();
        Attachment attachment = new Attachment(attachmentId, UUID.fromString(folderId), user.getUnitId(), UUID.fromString("11111111-1111-1111-1111-111111111111"), path   "New Folder/", size, isFolder, isPicture,
                        "", "0", "0", user.getName(), new Date());
        AttachmentRepository.add(attachment);

        File directory = new File(Settings.instance().getAttachmentsDir()   "/"   attachment.getPath());
        directory.mkdirs();
    }

    Attachment rootAttachment = AttachmentRepository.read(folderId   "/");
    writeJsonAttachmentsTree(response, user, request.getRequestURI(), rootAttachment);
}
  

Ответ №1:

В Java нет пользовательской встроенной функции, которая создавала бы для вас каталог, если желаемое имя уже существует, вы должны реализовать его самостоятельно.

 public static void main(String[] args) {

    File folderPath = new File("c:\New Folder");

    // Check whatever folderPath exists
    System.out.println(folderPath.getPath()   " is directory ? "   folderPath.isDirectory());

    // Create new folder
    File folderCreated = createFolder(folderPath);
    System.out.println("The new directory path is: "   folderCreated.getPath());

    // Check whatever folderPath exists
    System.out.println(folderCreated.getPath()   " is directory ? "   folderCreated.isDirectory());
}

public static File createFolder(File path) {
    File pathNum = new File(path.getPath());
    String num = "";
    int i = 1;
    do {
        pathNum = new File(path.getPath()   num);
        num = "("     i   ")";
    } while (!pathNum.mkdir());
    return pathNum;
}