2013-09-05 10 views
7

このディレクトリ内に新しいディレクトリとファイルを作成しようとしていますが、どこに間違っているのか教えてください。javaを使用して新しいディレクトリとその中のファイルを作成する

私はWindowsシステムを使用していますが、私のディレクトリには、私の.javaファイルが存在するフォルダに存在します。

import java.io.*; 
class PS_Task1 { 
    public static void main(String[] args) { 
     try { 
      File file = new File("Library\\test.txt"); 
      file.mkdir(); 
      file.createNewFile(); 
     } 
     catch(Exception e) { 
      System.out.println("ecception"); 
     } 
    } 
} 
+1

例外を? – sanbhat

+0

これはJavaの基本です。 http://docs.oracle.com/javase/tutorial/essential/io/fileOps.html – AJJ

+1

@ Rock123で基本Javaのドキュメントを読んだら、これを得ることができます。ここで質問したりask.youのようにjava.feltを開始しました私はより良いリソースに向けることができます。 – WannaBeCoder

答えて

22

基本的には、新しいファイルを作成しようとし、その後、Library\test.txtというディレクトリを作成しているされて何が起こっているか、同じことを呼ばれ、これは明らかに仕事に行くのではありません。

ので、代わりに

File file = new File("Library\\test.txt"); 
file.mkdir(); 
file.createNewFile(); 

...の...それが失敗した場合、実際の例外のいずれかの種類をスローしません

mkdir、追加

File file = new File("Library\\test.txt"); 
file.getParentFile().mkdir(); 
file.createNewFile(); 

を試しましたむしろ迷惑なので、代わりに、私はもっともっと似たようなことをするでしょう...

File file = new File("Library\\test.txt"); 
if (file.getParentFile().mkdir()) { 
    file.createNewFile(); 
} else { 
    throw new IOException("Failed to create directory " + file.getParent()); 
} 

だけので、私は実際の問題が何であったか...

追加

知っていました(この文脈での)ディレクトリの作成はあなたからプログラムを実行した場所になります。 ..

たとえば、C:\MyAwesomJavaProjects\FileTestからプログラムを実行すると、このディレクトリにというディレクトリが作成されます。このディレクトリにはLibraryというディレクトリが作成されます。実際にアプリケーションが実際にJarにバンドルされる可能性があるので、ファイルを.javaファイルと同じ場所に作成することは一般的にはお勧めできません。

+0

このコードはWindowsで動作しますが、Linuxでは動作しません。 –

+0

基本的な原理shodは、あなたがディレクトリ/ファイルを作成するための書き込み権限を持っていると仮定して、MacOSとUnixシステムでこの同じテクニックを使用しています。 – MadProgrammer

3

は、プロジェクト内に新しいディレクトリを作成し、ファイルを作成し、それに書き込むためにこれを行います

public static void main(String[] args) { 
    //System.getProperty returns absolute path 
    File f = new File(System.getProperty("user.dir")+"/folder/file.txt"); 
    if(!f.getParentFile().exists()){ 
     f.getParentFile().mkdirs(); 
    } 
    //Remove if clause if you want to overwrite file 
    if(!f.exists()){ 
     try { 
      f.createNewFile(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    try { 
     //dir will change directory and specifies file name for writer 
     File dir = new File(f.getParentFile(), f.getName()); 
     PrintWriter writer = new PrintWriter(dir); 
     writer.print("writing anything..."); 
     writer.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

} 
関連する問題