Java 正在关闭连接-InputStream

Java 正在关闭连接-InputStream,java,file,url,connection,inputstream,Java,File,Url,Connection,Inputstream,在下载之前,我需要检查ADRESE上的文件是否存在。在到达一些不存在的文件之前,它可以正常工作。try-catch块不能很好地解决这个问题。当我打开连接(InputStream)时,它试图下载它,但失败并转到“catch”。但它并没有关闭它的自我。下次我使用相同的IP调用该方法时,它会崩溃并出现sais-同一IP上的连接太多(2) 总结: 直到它到达错误的地址,它才能正常工作 当它到达错误的地址时,它会去“捕捉”,但不会关闭它的自我,它不能再连接 public boolean exists(St

在下载之前,我需要检查ADRESE上的文件是否存在。在到达一些不存在的文件之前,它可以正常工作。try-catch块不能很好地解决这个问题。当我打开连接(InputStream)时,它试图下载它,但失败并转到“catch”。但它并没有关闭它的自我。下次我使用相同的IP调用该方法时,它会崩溃并出现sais-同一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;
}

我尝试过各种程序,但如果没有一些特殊的技巧,它将无法工作。请问,有人能帮我吗?

为什么不使用Finally block并关闭其中的所有连接

我将使用该块关闭我的
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;
}

尝试使用apache HttpClient的新版本,代码如下:

HttpClient httpClient = new HttpClient();
 GetMethod get = new GetMethod(url);
      try{
httpClient.executeMethod(get);


        return get.getResponseBodyAsString();


    } catch (HttpException clP_e) {

        throw new IOException(clP_e);

    } finally {

        get.releaseConnection();

    }

我认为这也是一个解决办法。不是吗?当我试图在连接未打开的情况下关闭连接时,它认为是nullpointerex…是的,但答案应该更具描述性,需要强调您的工作。因为这是客户端代码,所以它不应该在一次连接失败后失败或阻塞。这是不是有很多失败的连接仍处于等待阶段?很好。。我想我只会说,而不是演示如何做当然,这比人们提问时应该做的复制和粘贴更重要那就行不通了。。。我在那里仍然有太多的联系。。。它不会下载下一个文件否,它不会,因此您必须使用: