2010-12-02 33 views
0

私は割り当てがあり、いくつかのクラスがあります。そのうちの1つはファイルを読み込むメソッドを持つfilereaderクラスであり、ファイルを含むパラメータ(String)で呼び出されますパス、今私はいくつかの.txtファイルを持っている、彼らは.javaファイルと同じフォルダにあるので、私はちょうどファイルパスとしてファイルパスとして渡すことができると思った(比較的phpのように)例外が見つかりません!ファイルが見つかりません[Java]

与えられたクラスが正しく動作していることと、クラスが実際に.javaファイルと同じフォルダworkspace/srcにあることを確認しています。ファイルパス文字列に何か問題があります。

private static final String fileF = "File.txt"; 
private static final ArrayList<String[]> instructionsF = 
CreatureReader.readInstructions(fileF); 

これは、任意の助け気づくために

+1

これは、有効なJavaクラスではないため、あなたのコードのすべてにすることはできません。問題を再現できる最小限の実行可能コードで質問を更新してください。少なくとも、JavaファイルIO呼び出しを含める必要があります。 –

+3

.javaファイルの場所ではなく、現在の作業ディレクトリは実行可能ファイルを実行する場所です。 – Falmarri

+0

ファルマリを聞く! file.txtはあなたがjavaを呼び出すディレクトリになければなりません。 –

答えて

10

入れ、この:あなたのコード内のどこかに

File here = new File("."); 
System.out.println(here.getAbsolutePath()); 

。これはプログラムの現在のディレクトリを表示します。

次に、ファイルをそこに置くか、ファイルパスを変更します。

+0

実際にjavaはメインフォルダを '現在のフォルダ'(あなたの小さなテストのおかげで見つけました)としていますので、src/... – Samuel

+0

これはあなたのJavaプログラムの実行方法に依存します。どんな場合でも、このテストは現在の作業ディレクトリを示します –

+0

これはおそらく、Eclipseまたはプロジェクトフォルダからプログラムを実行する他のエディタです。 Falmarriは理由を説明しました。 –

3

2つのことについて

おかげで私のコードです: "FILE.TXTは" 本当にそれ以来、そのように命名されている場合

  1. チェック"file.txt" - >大文字と小文字の区別が問題になりません!
  2. あなたは(ディレクトリ全体なし)相対ファイル名を使用している場合、あなたのファイルが見つかりません、それはあなたのクラスパス上にない - >あなたの.classファイルがそう

を生成されている場合、それを入れてみてください:あなたの場合/home/javatest/File.txtという名前のファイルがあり、ソースコードが/home/javatest/であり、同じディレクトリに.classというファイルがある場合、コードは正常に動作するはずです。

0

クラスがパッケージ内にあり、ファイルを兄弟として配置した場合、パスにパッケージパスが含まれている必要があります。他の回答で示唆されているように、作業ディレクトリのパスをプリントアウトして、Javaがファイルの相対的な場所を探しているかどうかを判断します。

関連する問題