2011-07-28 14 views
3

私はファイルを読み込んでいるJavaプロジェクトを持っています。Javaの現在のディレクトリからファイルを読み取る

String dataset = "./myFile.dat"; 

をしかし、私は取得しています::ファイルが現在のディレクトリにあるように私はこれをやっているjava.io.FileNotFoundExceptionをそれがファイルを見つけることができないと言って。

これを修正するにはどうすればよいですか?私はパス全体を与えた場合、それは動作します...

String dataset = "C:\\eclipse\\workspace\\p1\\src\\myFile.dat"; 
+0

'System.getProperty(" user.dir ")'を前置するとどうなりますか? – cwallenpoole

+2

多分これは助けることができるhttp://stackoverflow.com/questions/1480398/java-reading-a-file-from-current-directory – talnicolas

答えて

1

myFile.datは、アプリケーションリソースである場合、それは実行時にあるJARに含まれるべきクラス - アプリケーションのパス。その後、リソースへのURLは...

URL urlToData = this.getClass().getResource("path/in/jar/to/myFile.dat"); 

を用いて形成することができるuser.dir性質に依存しないでください。アプリの仕方にもよります。アプリケーションまたはデータのディレクトリとは非常に異なる場所を指している可能性があります。

0

はこのお試しください:

String dataset = System.getProperty("user.dir") + "/myFile.dat"; 
+0

これは脆弱なアプローチです。詳細は@talnicolasでリンクされているスレッドだけでなく、私の答えを参照してください。 –

+0

-1最初はファイル名の前に '/'が書かれていませんでした。それはさらに*壊れやすいものです。 'File(File、String)'コンストラクタは、異なるプラットフォーム上の異なるセパレータを考慮に入れます。ファイルオブジェクトの 'String'表現を構築するには、' System.getProperty( "file.separator") 'を使います。 –

関連する問題