Как создать структуру каталогов и подкаталогов с помощью java?

Здравствуйте, я хочу создать каталоги и подкаталоги с помощью java. Моя структура каталогов начинается с текущего каталога приложений, в текущей директории проектов, которая выглядит следующим образом...

Images
   |
   |+ Background
   |
   |+ Foreground
          |
          |+Necklace
          |+Earrings
          |+Etc...

Я знаю, как создать каталог, но мне нужно создать подкаталог, который я попытался с помощью следующего кода, что должно быть следующим шагом?

File file = new File("Images");
file.mkdir();

Ответ 1

Вы можете использовать File.mkdir() или File.mkdirs() для создания каталога. Между ними последний метод более толерантен и будет создавать все промежуточные каталоги по мере необходимости. Кроме того, поскольку я вижу, что вы используете "\\" в своем вопросе, я бы предложил использовать File.separator для переносимой строки разделителя путей.

Ответ 2

Начиная с Java 7, вы можете использовать java.nio.file.Files и java.nio.file.Paths.

Path path = Paths.get("C:\\Images\\Background\\..\\Foreground\\Necklace\\..\\Earrings\\..\\Etc");

try {
    Files.createDirectories(path);
} catch (IOException e) {
    System.err.println("Cannot create directories - " + e);
}

Это сложное решение (потому что я использовал только один путь, чтобы перейти ко всей структуре).

Если вам не нравятся сложные решения, вы можете использовать 4 простых пути:

Path p1 = Paths.get("C:\\Images\\Background");
Path p2 = Paths.get("C:\\Images\\Foreground\\Necklace");
Path p3 = Paths.get("C:\\Images\\Foreground\\Earrings");
Path p4 = Paths.get("C:\\Images\\Foreground\\Etc");

а затем вызовите метод createDirectories для всех из них:

Files.createDirectories(p1);
Files.createDirectories(p2);
Files.createDirectories(p3);
Files.createDirectories(p4);

Ответ 3

Вы можете создать все родительские каталоги с помощью File.mkdirs().

File.mkdirs() - Создает каталог, названный этим абстрактным путем, включая любые необходимые, но несуществующие родительские каталоги. Обратите внимание, что если эта операция завершится неудачно, возможно, ей удалось создать некоторые из необходимых родительских каталогов.

Ответ 4

Вы можете сделать это с помощью File#mkdirs() и что-то вроде

// The "/" is cross-platform safe as a path-separator in Java.
// So is "\\" but that twice the characters!
String path = createImages.getAbsolutePath() + "/Images";
File f = new File(path);
if (!f.isDirectory()) {
  boolean success = f.mkdirs();
  if (success) {
    System.out.println("Created path: " + f.getPath());
  } else {
    System.out.println("Could not create path: " + f.getPath());
  }
} else {
  System.out.println("Path exists: " + f.getPath());
}

В связанном Javadoc,

Создает каталог с именем этого абстрактного пути, включая любые необходимые, но несуществующие родительские каталоги. Обратите внимание, что если эта операция не удалась, возможно, ей удалось создать некоторые из необходимых родительских каталогов.

Ответ 5

Чтобы создать каталог на Java с помощью кода ниже.

  • для одного каталога, которым мы пользуемся.

новый файл ( "D:\\Images" ). mkdir();

  1. для подкаталогов

новый файл ( "D:\\Images\\Foreground\\Earrings" ). mkdirs();

Например:

package com.msr.io;

import java.io.File;

public class CreateDirectory
{
    public static void main(String[] args)
    {   
    File file = new File("D:\\Images");
    if (!file.exists()) {
        if (file.mkdir()) {
            System.out.println("directory created successfully");
        } else {
            System.out.println("directory is not created");
        }
    }

    File files = new File("D:\\Images\\Foreground\\Earrings");
    if (!files.exists()) {
        if (files.mkdirs()) {
            System.out.println("sub directories created successfully");
        } else {
            System.out.println("failed to create sub directories");
        }
    }

    }
}

Ответ 6

Вы можете просто использовать file.mkdirs(), он создаст подкаталог.

String path = images + File.separator + Background + File.separator + Foreground + File.separator + Necklace + File.separator  + Earrings ;
File file = new File( path );
file.mkdirs();