2013-07-19 19 views
12

私はEclipseとjdk1.7を使用しています。私は、ディレクトリ内の出力ディレクトリを作成するファイル処理を使用して基本的なプログラムを作成しています。しかし、私がプログラムを実行すると、出力はfalseと表示され、ディレクトリは作成されません。私は同じ名前のディレクトリがあるために出力が間違っていると思ったが、これは理由ではない。だから私は助けが必要です。私のコードは以下の通りです:mkdir()が新しいディレクトリを作成していません

import java.io.File; 

public class P { 
    public static void main(String[] args) { 
     File f1 = new File ("abc"); 
     File f2 = new File (f1,"abc"); 
     System.out.println(f2.mkdir()); 
    } 
} 

出力はfalseですが、まだディレクトリは作成されていません。 この問題を解決するにはどうすればよいですか?これはこのプログラムだけではなく、私がメソッドmkdir()を呼び出す各プログラムにも同じ問題があります。

+0

"abc" が存在し、ディレクトリされていますか?あなたのプログラムの作業ディレクトリで新しいディレクトリを探しましたか? (新しいファイル( "")を印刷します.DAを見つけるためのgetAbsolutePath()) – A4L

+1

診断の場合、['f2.getAbsolutPath()'](http://docs.oracle.com/javase/7/docs/api /java/io/File.html#getAbsolutePath())。あなたが書き込み権限を持っていない場所にディレクトリを作成しようとしているのでしょうか? – mthmulders

+0

Java 7では、booleanの戻り値の代わりに例外を使用するFilesクラスが導入されました。これは、将来のデバッグに失敗したもののテキスト記述を取得するのに便利です。 –

答えて

19

複数のディレクトリを作成する場合は、mkDirs()にはsを指定する必要があります。おそらく、場所に許可があるので、canWrite()を確認することも価値があります。これらの両方は、Fileクラスに

12

そのobj.mkdirs()

はこれに見ている。

File f = new File("non_existing_dir/someDir"); 
System.out.println(f.mkdir()); 
System.out.println(f.mkdirs()); 

は、最初の印刷では、ディレクトリとリターンfalseを作成しませんが、2番目はないとtrueを返します。

1

mkdirには、相対パスではなく抽象パスが必要です。試してみてください...

File f2 = new File (f1, "C:\\"); 

...などです。 Java DOCから

公共ブールます。mkdir()

がこの抽象パス名が示すディレクトリを作成します。

戻り値:

場合はtrueとディレクトリが作成された場合にのみ。そうでない場合はfalse

例外:

にSecurityException - セキュリティーマネージャーが存在し、指定されたディレクトリを許可しないのSecurityManager.checkWrite(java.lang.String)メソッドを作成する場合は

0

Create directory example

ファイルが "abc"を推測するように見えないので、あなたのパス上で作業する必要があるようです。

また、ディレクトリを作成しようとしているパスにアクセス権があることを確認してください。そうしないと失敗します。私はJavaで遊んでいたのでしばらくしていましたので、mkdirをパス全体(つまり/ here /、/ here/now-here /、/ here/now-ここ/最終)かどうか。それは再帰的かもしれないと思うが、それは検証する価値があるだろう。

実際、他の回答を見ると、mkdirsは再帰的であるように見えますが、mkdirは再帰的ではありません。私はmkdirと一緒に行くつもりですが、特に入力が知られていない場合は、まったく同じことをするmkdirで関数を書くことになります。

0

あなたのケースでは、Fileクラスの制作方法を使用することができます。

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

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

以下にソースとリファレンスを示します(詳細は説明しています)。

http://www.flowerbrackets.com/create-directory-java-program/

https://docs.oracle.com/javase/6/docs/api/java/io/File.html#canWrite%28%29

関連する問題