2011-01-27 2 views
1

これはスタックオーバーフローに関する私の最初の投稿です!私はJavaを使い慣れていないので、最近はFile I/O用のJava Buffered Readerを試しています。バッファドリーダーのテキストファイルですか?

System.out.println("Please input an existing filename, otherwise type in 0;"); 
fileName = input.nextLine(); 
if(fileName.compareTo("0") != 0) 
{ 
    BufferedReader inFile = new BufferedReader(new FileReader(fileName)); 

    firstName = inFile.readLine(); 
    lastName = inFile.readLine(); 
    phoneNumber = inFile.readLine(); 
    while (phoneNumber != null) { 
     c1[index] = new Contact(firstName,lastName,phoneNumber); 
     index++; 
     firstName = inFile.readLine(); 
     lastName = inFile.readLine(); 
     phoneNumber = inFile.readLine(); 
    } 
    inFile.close(); 
} 

私はtxtファイル場所に配置しました:私はここのスレッドで例外

例外「メイン」java.io.FileNotFoundException

は私のコードのサンプルです取得しています。クラスと.javaファイルは(私はNetbeans IDEを使用しています)です。 そして、 "namelist.txt"をfileName文字列の入力として入力します。

私はそれを間違った場所に置いていますか、何か不足していますか?

+2

タイプを検索しようと場所をプリントアウトします入力としてnamelist.txtへのフルパス。あなたのアプリケーションの "作業ディレクトリ"にファイルを配置する必要があります –

答えて

3

JavaはあなたがfileName

fileName = input.nextLine(); 

で指定した内容のファイルを見つけることができませんfileName = input.nextLine();後に次の行を追加します。

System.out.println("Reading from: " + new java.io.File(fileName).getAbsolutePath()); 

Javaがでファイル

1

使用getClass().getResourceAsStream(filename) - これは(クラスパス内の)現在のクラスの場所からの相対ファイル名を解決します。したがって、InputStreamが得られます。その後、InputStreamReaderにラップし、目的のエンコードを指定します。

あなたはそれはあなたが最も可能性が高いたくないデフォルトのディレクトリ内で検索されますファイル名を渡します。

+0

ありがとうございます! – n00b

+0

ただし、クラスファイルがjarファイルにパッケージ化されていない場合にのみ機能するため、この方法を使用するように注意してください。あなたは、現在のディレクトリがどこにあるかを知ること、または作業ディレクトリをプログラムの引数として渡すことをお勧めします。 –

関連する問題