web-dev-qa-db-ja.com

Javaでディレクトリを作成する方法

ディレクトリ/フォルダを作成する方法

System.getProperty("user.home");をテストしたら

新しいフォルダが存在しない場合に限り、ディレクトリ(ディレクトリ名 "new folder")を作成する必要があります。

350
jimmy

〜7年後、私はBozhoによって提案されているより良いアプローチにそれを更新します。

new File("/path/directory").mkdirs();

廃止予定:

File theDir = new File("new folder");

// if the directory does not exist, create it
if (!theDir.exists()) {
    System.out.println("creating directory: " + theDir.getName());
    boolean result = false;

    try{
        theDir.mkdir();
        result = true;
    } 
    catch(SecurityException se){
        //handle it
    }        
    if(result) {    
        System.out.println("DIR created");  
    }
}
413
Jigar Joshi
new File("/path/directory").mkdirs();

ここで、 "directory"は作成したい/存在したいディレクトリの名前です。

470
Bozho

Java 7では、 Files.createDirectories() を使用できます。

例えば:

Files.createDirectories(Paths.get("/path/to/directory"));
126
Benoit Blanchon

あなたは試すことができます FileUtils#forceMkdir

FileUtils.forceMkdir("/path/directory");

この ライブラリ にはたくさんの便利な機能があります。

37
ahvargas

mkdir vs mkdirs


単一のディレクトリを作成したい場合はmkdirを使用してください。

new File("/path/directory").mkdir();

フォルダ構造の階層を作りたい場合はmkdirsを使用してください。

 new File("/path/directory").mkdirs();
27
Burusothman
  1. 単一のディレクトリを作成します。

    new File("C:\\Directory1").mkdir();
    
  2. 「Directory2」という名前のディレクトリと、そのすべてのサブディレクトリ「Sub2」および「Sub-Sub2」を一緒に作成します。

    new File("C:\\Directory2\\Sub2\\Sub-Sub2").mkdirs()
    

ソース:この完璧な チュートリアル 、あなたはまた使用例を見つけます。

21
Mouna

Java 7以上の場合

Path path = Paths.get("/your/path/string");
Files.createDirectories(path);

作成する前にdirまたはファイルの存在を確認する必要はないようです。 createDirectories javadocs

最初に存在しない親ディレクトリをすべて作成してディレクトリを作成します。 createDirectoryメソッドとは異なり、ディレクトリがすでに存在するために作成できなかった場合でも例外はスローされません。 attrsパラメータは、存在しないディレクトリを作成するときにアトミックに設定するためのオプションのファイル属性です。各ファイル属性はその名前で識別されます。同じ名前の複数の属性が配列に含まれている場合、最後に出現したもの以外はすべて無視されます。

この方法が失敗した場合は、すべてではないがいくつかの親ディレクトリを作成した後にそうすることができます。

12
groo

次のメソッドはあなたが望むことをするべきです、ちょうどあなたが mkdir()の戻り値をチェックしていることを確認してください- mkdirs()

private void createUserDir(final String dirName) throws IOException {
    final File homeDir = new File(System.getProperty("user.home"));
    final File dir = new File(homeDir, dirName);
    if (!dir.exists() && !dir.mkdirs()) {
        throw new IOException("Unable to create " + dir.getAbsolutePath();
    }
}
7
Jon Freedman

Javaでディレクトリ/フォルダを作成するには、2つの方法があります。

ここでmakedirectoryメソッドは、存在しない場合は単一のディレクトリを作成します。

File dir = new File("path name");
boolean isCreated = dir.mkdir();

そして

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

ここでmakedirectoriesメソッドは、ファイルオブジェクトが表すパスに存在しないすべてのディレクトリを作成します。

例えば、下記のリンクを参照してください(とてもよく説明されています)。それが役に立てば幸い!! https://www.flowerbrackets.com/create-directory-Java-program/ /

4
Shiva

清楚な:

import Java.io.File;

public class RevCreateDirectory {

    public void revCreateDirectory() {
        //To create single directory/folder
        File file = new File("D:\\Directory1");
        if (!file.exists()) {
            if (file.mkdir()) {
                System.out.println("Directory is created!");
            } else {
                System.out.println("Failed to create directory!");
            }
        }
        //To create multiple directories/folders
        File files = new File("D:\\Directory2\\Sub2\\Sub-Sub2");
        if (!files.exists()) {
            if (files.mkdirs()) {
                System.out.println("Multiple directories are created!");
            } else {
                System.out.println("Failed to create multiple directories!");
            }
        }

    }
}
4
Program-Me-Rev

この質問は答えられましたが。余分なものを追加したいのです。つまり、作成しようとしているディレクトリ名のファイルが存在する場合は、エラーが表示されます。将来の訪問者のために。

public static void makeDir()
{
    File directory = new File(" dirname ");
    if (directory.exists() && directory.isFile())
    {
        System.out.println("The dir with name could not be" +
        " created as it is a normal file");
    }
    else
    {
        try
        {
            if (!directory.exists())
            {
                directory.mkdir();
            }
            String username = System.getProperty("user.name");
            String filename = " path/" + username + ".txt"; //extension if you need one

        }
        catch (IOException e)
        {
            System.out.println("Prompt for error");
        }
    }
}
4
score

Fileオブジェクトはディレクトリであってファイルではないことに注意するためにFile.mkdir()またはFile.mkdirs()を呼び出すすべての人に指摘したいだけです。たとえば、パス/dir1/dir2/file.txtに対してmkdirs()を呼び出すと、おそらくfile.txtという名前の folder が作成されます。新しいファイルを作成していて、自動的に親フォルダを作成したい場合は、次のようにします。

            File file = new File(filePath);
            if (file.getParentFile() != null) {
                file.getParentFile().mkdirs();
            }
3
Matt Bonness

これは私にとってはうまくいく方法ですが、1つ以上のディレクトリを作成します。Java.io.Fileをインポートする必要があります。
/*以下のコードを入力してダイレクトdir1を追加するか、存在しない場合はdir1を確認し、存在しない場合は作成してdir2およびdir3と同じにします。* /

    File filed = new File("C:\\dir1");
    if(!filed.exists()){  if(filed.mkdir()){ System.out.println("directory is created"); }} else{ System.out.println("directory exist");  }

    File filel = new File("C:\\dir1\\dir2");
    if(!filel.exists()){  if(filel.mkdir()){ System.out.println("directory is created");   }} else{ System.out.println("directory exist");  }

    File filet = new File("C:\\dir1\\dir2\\dir3");
    if(!filet.exists()){  if(filet.mkdir()){ System.out.println("directory is  created"); }}  else{ System.out.println("directory exist");  }
2

この機能により、ユーザーのホームディレクトリにディレクトリを作成できます。

private static void createDirectory(final String directoryName) {
    final File homeDirectory = new File(System.getProperty("user.home"));
    final File newDirectory = new File(homeDirectory, directoryName);
    if(!newDirectory.exists()) {
        boolean result = newDirectory.mkdir();

        if(result) {
            System.out.println("The directory is created !");
        }
    } else {
        System.out.println("The directory already exist");
    }
}
0
Boubakr

それを確実に作成したいのであれば、これ:

final String path = "target/logs/";
final File logsDir = new File(path);
final boolean logsDirCreated = logsDir.mkdir();
if (!logsDirCreated) {
    final boolean logsDirExists = logsDir.exists();
    assertThat(logsDirExists).isTrue();
}

beacuse mkDir()はブール値を返し、変数を使わないとfindbugsはそれを叫びます。また、それはいいではありません...

mkDir()は、mkDir()が作成した場合にのみtrueを返します。 dirが存在する場合はfalseを返します。したがって、作成したdirを確認するには、exists()がfalseを返す場合にのみmkDir()を呼び出します。

assertThat()は結果をチェックし、exists()がfalseを返すと失敗します。 ofcあなたは作成されていないディレクトリを扱うために他のものを使うことができます。

0
l0wacska