❶ 如何处理java的InputStream的close
调试一下:3 to 4,当代码执行到3时图1注意到in的fd与buffered的in,说明buffered与in都是打开的,然后执行3,到4时图2注意到in的fd于buffered的in, 说明buffered与in都是关闭的,那么in.close就是多余的了 再看如果不执行3,执行4和5,当执行到4时,与图1一致,执行到5时 fd为-1,buffered为发生变化,故此时之关闭了in,而buffered并为关闭,之后就又是图2了 所以,我们只要关闭buffer流就ok了,除非你是一个多疑的人,并且对jvm严重的不满,在或者你十分喜欢打字,并不在乎代码的执行效率。 接下来,看一下一下的代码: BufferedReader buffered = null; try { buffered = new BufferedReader(new InputStreamReader( new FileInputStream("/home/skeeey/test/prop"))); } catch (FileNotFoundException e) { // TODO } finally { try { buffered.close(); } catch (IOException e) { // TODO Auto-generated catch blo } } TMD讨厌的IOException,关闭个流还抛异常,受不了,让我的代码怪异无比... .... try { if (input != null) { input.close(); } } catch (IOException ioe) { // ignore } kao,他忽略了,不过第2行的写法,很好,原因吗... ...,我就不说了 :-) 其实还可以改进,给一个连接,讨论的不错:
❷ Java中 inputstream 需要close() 吗 该怎么处理 。我在后面close()之后就跑出IO异常了
fileinput.close()不应该在while内容。
while循环在读取fileinput,在循环内部close()之后,下一次循环调用read时,肯定就出错了。
❸ java的close方法
书上说的是InputStream和OutputStream这两个类的close()方法什么也不做。
这么做是为了让开发者自己去继承这两个类,并覆盖close()方法。如果不覆盖,则默认什么也不做。这使得程序员可以在close方法中做自己需要的操作。比如删除临时文件之类的。。。
JAVA中,所有的输入流都是InputStream的子类的对象,所有的输出流都是OutputStream的子类的对象。因为InputStream和OutputStream都是抽象类,它们不可能被实例化。
JDK中有一些常用的类已经继承了这两个类。比如FileInputStream和FileOutputStream,这两个子类的close()方法都有执行操作的。
顺便说一句,麦兄,你什么时候出来教训一下罗伊阿,你看他昨天在火箭面前多么嚣张!