-1

ダウンロードする前に、アドレスにファイルが存在するかどうかを確認する必要があります。存在しないファイルに到達するまでは正常に機能します。try-catch ブロックはうまく解決しません。接続 (InputStream) を開くと、ダウンロードしようとしますが、失敗して「キャッチ」に進みます。しかし、それは自分自身を閉じません。次に同じ IP でメソッドを呼び出すと、クラッシュして次のように表示されます - 同じ IP での接続が多すぎます (2)

概要:

間違ったアドレスに到達するまで、正常に動作します

間違ったアドレスに到達すると、「キャッチ」に進みますが、自分自身を閉じず、接続できなくなります

public boolean exists(String URLName) throws IOException {
    boolean result = false;
    URL url = new URL(URLName);
    try {
        input = url.openStream();
        System.out.println("SUCCESS");
        result = true;
        input.close();
    } catch (Exception e) {
        input.close();
        System.out.println("FAIL");
    }
    return result;
}

いろいろやってみましたが、何か特別な裏技がないとうまくいきません。お願いします、誰かこれで私を助けてくれませんか?

4

3 に答える 3

2

finallyブロックを使用して閉じ、代わりInputStreamに使用するコードをリファクタリングしますURLConnection

例:

public boolean exists(String URLName) throws IOException {
    boolean result = false;
    URLConnection connection = null;
    InputStream input = null;
    try {
    connection = new URL(URLName).openConnection();
        input = connection.getInputStream();
        System.out.println("SUCCESS");
        result = true;
    } catch (Exception e) {
        System.out.println("FAIL");
    } finally {
        if (input != null) {
            input.close();
        }
    }
    return result;
}
于 2013-08-19T07:52:37.517 に答える
1

最後にブロックして、その中のすべての接続を閉じてください... ??

于 2013-08-19T07:49:22.347 に答える