2012-03-11 10 views
16

相対パスを使用して新しいディレクトリにファイルを作成したいとします。ディレクトリ "tmp"の作成は簡単です。Java - 相対パスを使用してディレクトリにファイルを作成する方法

ただし、ファイルを作成すると、新しいファイルではなく現在のディレクトリに保存されます。コード行は以下の通りです。

File tempfile = new File("tempfile.txt"); 

も、これを試してみました:

File tempfile = new File("\\user.dir\\tmp\\tempfile.txt"); 

は、明らかに私はこの方法がどのように動作するかを誤解しています。あなたの援助は非常に高く評価されます。

EDIT:現在使用されているコード行だけでなく、相対パスで混乱を取り除くために役立つと思われるコード行を追加しました。例えばhttp://docs.oracle.com/javase/6/docs/api/java/io/File.html

::次の2つの引数を取るコンストラクタを持つディレクトリへの相対パスを作成することができます

+1

上記のコードでは、絶対パス '\ user.dir \ tmp \ tempfile.txt'を使用しています。このファイルが現在のディレクトリにどのように作成されるかわかりません。関連するコードを掲示し、あなたが期待していることを説明してください。 –

+1

* "..相対パスを使用しています。" *何に対して?アプリケーションですか?クラスのパッケージ?相対主義的な観察者? a)それはコンストラクタであり、メソッドではありません。 b) 'user.dir'は自動的に展開されません。 c)魔法によるプログラミングはめったに動作しません。 –

答えて

23
File dir = new File("tmp/test"); 
dir.mkdirs(); 
File tmp = new File(dir, "tmp.txt"); 
tmp.createNewFile(); 

はBTW:テスト用@RuleとTemporaryFolderクラスは一時ファイルやフォルダを作成するために

+0

それはそれをしました!ありがとう、私は2つの別々の新しいFile文が必要であることを理解するのに数時間を要しました。 –

+3

ちょうど(あなたがこれを知らないかもしれないが)頭が上がっているのですが、OracleのOracleは非常に優れたAPIドキュメントを持っています。それらを理解してナビゲートすることを学ぶと、時間を大幅に節約できます。たとえば、Fileクラスのユーザーが使用できるさまざまなコンストラクタ(http://docs.oracle.com/)を見ていれば、特定の問題の解決策を理解できたはずです。com/javase/6/docs/api/java/io/File.html – claymore1977

4

File tempfile = new File("user.dir/tmp", "tempfile.txt"); 

ところで、バックスラッシュ「\」は、Windowsでのみ使用することができます。ほとんどの場合、ポータブルスラッシュ「/」を使用できます。

+5

'File.separator'に何が起こったのですか? – Manish

+1

* "ほとんどの場合、ポータブルフォワードスラッシュ" /"."*を使用する必要があります。***の場合は、 'File'(親)と' String '(ファイル名)または' System.getProperty( "file.separator") 'を使用します。 –

+0

@Manishすべて小文字にする必要があります。 –

2
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath(); 
System.out.println(routePath); 

/*for finding the path*/ 
String newLine = System.getProperty("line.separator"); 
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(routePath+File.separator+".."+File.separator+"backup.txt"), true)); 
/*file name is backup.txt and this is working.*/ 
0

レッツは、あなたのプロジェクトフォルダに「ローカル・ストレージ」を持っていると言うと、あなたは入れたいですテキストなどを使用してファイルの書き込み

File file = new File(dir,fileName); //KEY IS DIR ex."./local-storage/" and fileName='comp.html' 

     // if file doesnt exists, then create it 
     if (! file.exists()) 
     { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 
     bw.write(text); 
関連する問題