Android解析xml之InputStream疑义

Android解析xml之InputStream疑问
关于java代码读取指定服务器路径下的xml文件,获取服务器输入流的代码如下:


public class HttpUtils {

public HttpUtils() {
// TODO Auto-generated constructor stub
}

public static InputStream getXML(String path) {
InputStream inputStream = null;
try {
URL url = new URL(path);
if (url != null) {
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setConnectTimeout(3000);
connection.setDoInput(true);
connection.setRequestMethod("GET");
int code = connection.getResponseCode();
if (code == 200) {
inputStream = connection.getInputStream();
}
}

catch (Exception e) {
}
/* finally{
if(inputStream!=null)
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/

return inputStream;
}
}



我的疑问是:finally部分,注释掉finally运行结果是对的,
但是InputStream不应该手动关闭的吗?   如果在finally中写了inputStream.close()代码就报错了,这是怎么回事

eclipse下客户端代码下载
myeclipse下服务器代码
------解决思路----------------------
报什么错误?应该不是你注释掉代码的问题
------解决思路----------------------
没有仔细研究过I/O,有个问题,调用了close之后是不是对象就没了,那return对象就有问题了

只是脑补,错了就当学习知识。
------解决思路----------------------
引用:
没有仔细研究过I/O,有个问题,调用了close之后是不是对象就没了,那return对象就有问题了

只是脑补,错了就当学习知识。


就算是null也应该可以的,脑补失败。忽略
------解决思路----------------------
你这种情况不是报错,在方法getXML就不要关闭流了,应该是你调用完这个方法后,再把流关闭,否则可能会导致读的流不完整

比如
InputStream inputStream=getXML("http://www.baidu.com");
byte[] byteArray = new byte[1024];
while(inputStream.read(byteArray)!=-1){
System.out.println(new String(byteArray,"UTF-8"));
}
if(inputStream!=null)
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}