Java 正在关闭连接-InputStream
在下载之前,我需要检查ADRESE上的文件是否存在。在到达一些不存在的文件之前,它可以正常工作。try-catch块不能很好地解决这个问题。当我打开连接(InputStream)时,它试图下载它,但失败并转到“catch”。但它并没有关闭它的自我。下次我使用相同的IP调用该方法时,它会崩溃并出现sais-同一IP上的连接太多(2) 总结: 直到它到达错误的地址,它才能正常工作 当它到达错误的地址时,它会去“捕捉”,但不会关闭它的自我,它不能再连接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
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…是的,但答案应该更具描述性,需要强调您的工作。因为这是客户端代码,所以它不应该在一次连接失败后失败或阻塞。这是不是有很多失败的连接仍处于等待阶段?很好。。我想我只会说,而不是演示如何做当然,这比人们提问时应该做的复制和粘贴更重要那就行不通了。。。我在那里仍然有太多的联系。。。它不会下载下一个文件否,它不会,因此您必须使用: