0

私は自分の時間にプログラミングを学ぼうとしていますが、まだコツをつかもうとしています。次のエラーが表示されます。

java.io.IOException: ハンドルが無効です

これが私のコードです

public class PrimeFinder {
private int[] prime;
FileInputStream input = null;
//default contructor uses the premade file prime.txt that has the first 10000 digits of pi
public PrimeFinder() throws IOException {
    try{
        input = new FileInputStream ("primes.txt");
    }
    finally {
        if (input != null ) {
            input.close();
        }
    }
}
//constructor with a predefined text file to use.
public PrimeFinder(String txtFile) throws IOException {
    try{
        input = new FileInputStream(txtFile);
    }
    finally {
        if (input != null ) {
            input.close();
        }
    }
}
public static void main(String[] args) throws IOException{

    PrimeFinder tester  = new PrimeFinder();
    tester.arrayListWithNumbers();
}
}

メソッドを呼び出すたびにエラーが発生していると思いarrayListWithNumbers()ます.デフォルトのコンストラクターでバイト数を表示しようとすると、完全に正常に動作し、101281 bytes.

4

1 に答える 1

3

実際に使用を開始する前に、コンストラクターinputのブロックを閉じています。finally終了部分をコンストラクターの外に移動し、完了時に呼び出される場所に移動します。たとえば、arrayListWithNumbersメインから呼び出す別の close メソッドの呼び出しの下などです。

この目的にも使用してはならないものを混同finallyしていると思います。finalize()

于 2012-04-14T00:45:22.613 に答える