ディレクトリ/フォルダを作成するにはどうすればよいですか?
テストしたら System.getProperty("user.home");
新しいフォルダが存在しない場合にのみ、ディレクトリ(ディレクトリ名「新しいフォルダ」)を作成する必要があります。
mkdir
Javaではべき等です。実装は、ディレクトリが存在するかどうかをチェックし、存在しない場合にのみ作成します。
ディレクトリ/フォルダを作成するにはどうすればよいですか?
テストしたら System.getProperty("user.home");
新しいフォルダが存在しない場合にのみ、ディレクトリ(ディレクトリ名「新しいフォルダ」)を作成する必要があります。
mkdir
Javaではべき等です。実装は、ディレクトリが存在するかどうかをチェックし、存在しない場合にのみ作成します。
回答:
〜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");
}
}
if(!theDir.exists())
でtheDir.mkdir()
ステータスが変更された可能性があります。また、ディレクトリを作成しない(にexists
戻るためtrue
)と必要になるまでの間に変更される可能性があります。メソッドの結果は、exists
ディレクトリを作成するかどうかを決定するために決して使用されるべきではありません。を呼び出すだけでmkdir
、すでに存在する場合は例外はスローされません。
mkdir
ディレクトリの呼び出しと必要性の間でステータスを変更することもできませんか?他のプロセスがディレクトリを削除することを意味していたと思います。
mkdirs
、ソースコードから実装を見ると、最初に呼び出されるのはif (exists()) { return false; }
です。実装自体は最初にディレクトリがすでに存在するかどうかを確認するため、この回答の誤りは、おそらく2xの条件を確認することだけです。あなたがそうであると思っているほど悪くはありません。
Files
では、Benoit Blanchonによる最新の回答のように、おそらくメソッドを使用する必要があります。(この回答はJava 7より前に書かれたようです。)
new File("/path/directory").mkdirs();
ここで「ディレクトリ」は、作成または存在させたいディレクトリの名前です。
what if the directory is already exists? It would do overwriting? or skip the process.
質問に対する回答で補完する必要があります。
Returns: true if and only if the directory was created, along with all necessary parent directories; false otherwise
Java 7を使用すると、 Files.createDirectories()
。
例えば:
Files.createDirectories(Paths.get("/path/to/directory"));
Unlike the createDirectory method, an exception is not thrown if the directory could not be created because it already exists
directory.toPath()
。
Java 7以降の場合:
Path path = Paths.get("/your/path/string");
Files.createDirectories(path);
createDirectories javadocsから、作成する前にディレクトリまたはファイルの存在を確認する必要がないようです。
存在しないすべての親ディレクトリを最初に作成して、ディレクトリを作成します。createDirectoryメソッドとは異なり、ディレクトリが既に存在するために作成できなかった場合でも、例外はスローされません。attrsパラメータは、存在しないディレクトリを作成するときにアトミックに設定するオプションのファイル属性です。各ファイル属性はその名前で識別されます。同じ名前の複数の属性が配列に含まれている場合、最後の出現を除くすべてが無視されます。
このメソッドが失敗した場合、親ディレクトリのすべてではなく一部を作成した後に失敗する可能性があります。
次のメソッドはあなたが望むことをするはずです、あなたが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();
}
}
この質問は答えられていますが。何か追加したいと思います。つまり、作成しようとしているディレクトリ名のファイルが存在する場合、エラーが表示されるはずです。将来の訪問者のために。
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");
}
}
}
清楚な:
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!");
}
}
}
}
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/
呼び出しているすべての人に指摘するFile.mkdir()
かFile.mkdirs()
、File
オブジェクトがファイルではなくディレクトリであることに注意したかっただけです。たとえばmkdirs()
、path を呼び出すと、必要な名前とは異なる名前のフォルダー/dir1/dir2/file.txt
が作成されますfile.txt
。新しいファイルを作成していて、親フォルダーも自動的に作成したい場合は、次のようにします。
File file = new File(filePath);
if (file.getParentFile() != null) {
file.getParentFile().mkdirs();
}
これは、私が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"); }
この機能を使用すると、ユーザーのホームディレクトリにディレクトリを作成できます。
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");
}
}
あなたがそれを確実に作成したいのであれば、これは:
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を確認するには、falseを返すexists()
場合にのみ呼び出しmkDir()
ます。
assertThat()
結果を確認し、exists()
falseを返すと失敗します。多くの場合、他のものを使用して、未作成のディレクトリを処理できます。
public class Test1 {
public static void main(String[] args)
{
String path = System.getProperty("user.home");
File dir=new File(path+"/new folder");
if(dir.exists()){
System.out.println("A folder with name 'new folder' is already exist in the path "+path);
}else{
dir.mkdir();
}
}
}