Ⅰ java关闭IO流的时候Socket也同时关闭
楼主解决了么,我想到一个办法:
服务端:就是每次接收到一个客户端请求以后,都重新启动一个线程用于逻辑处理,处理完毕后关闭该线程会自动关闭。
客户端:每次发送/接收数据都新建一个socket ,发送完/传输完就关闭当前socket
Ⅱ Java中,static代码块创建的IO流需要手动关闭吗
IO 流除了可以手动关闭外,在垃圾回收这个对象的时候也会自动关闭。
但系统进行垃圾回收的时机是不确定的,static 代码块执行完后,不会马上进行回收。在这段时间内,会造成无用的内存及IO等其他资源占用。所以最好还是用完即关。
推荐写在 try 里,try 块执行完自动关闭。
Ⅲ Java中的io流关闭问题
如下例子代码:
FileInputStream is = new FileInputStream(".");
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();
从设计模式上看:
java.io.BufferedInputStream是java.io.InputStream的装饰类。
BufferedInputStream装饰一个 InputStream 使之具有缓冲功能,is要关闭只需要调用最终被装饰出的对象的 close()方法即可,因为它最终会调用真正数据源对象的 close()方法。
BufferedInputStream的close方法中对InputStream进行了关闭,下面是jdk中附带的源代码:
java.io.BufferedInputStream的api:
close
public void close()throws IOException 关闭此输入流并释放与该流关联的所有系统资源。
因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子:
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("java IO close test");
bw.close();
}
验证ok
Ⅳ Java中怎么判断一个io流是否已经关闭
try{
inputstream.read();
Syste.out.println("流未关闭");
}cache(Exceptione){
Syste.out.println("流已关闭");
}
Ⅳ 关于java中io流的关闭问题,部分代码,这种情况用不用关闭new FileReader(file)
是的,你的new FileReader(file)是一个匿名对象。
JVM中对于那些打开了没有关闭的IO文件流,会在不再被使用的情况下,等到下次做Full GC的时候把他们全部回收,尽量少使用这种写法。文章来自:http://blog.csdn.net/kongxx/article/details/6405914
Ⅵ 大佬们,关于java IO流关闭的一点疑问,求大佬们帮帮忙
如果上面没有对流进行手动关闭的话,finally方法中的fis一定不为空
Ⅶ Java socket中关闭IO流后,发生什么事
为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言。同样的,din是输入流的代言。
可以造成dout被关闭的操作有:
1、调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出流都将不可再用。
2、调用socket.close();
3、调用socket.shutdownOutputStream();单方面关闭dout,此时din还可正常使用。
Ⅷ java输出多个文件时如何避免多次开关io流
既然是输出多个文件,那么输出流肯定是多个。输出完一个文件后关闭对应的流是肯定的。
至于输入流,如果是一个文件的话,可以先用一个输入流将文件读取到内存里,然后这个输入流就用不到了可以关闭了。如果是从多个文件里读取的话,那还是会有多个输入流,所以还是需要多次关闭。
Ⅸ java中IO流操作怎样关闭流
如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中 如果你先声明变量
InputStream(或者其他流类型) in = null;
然后执行其他语句,再 in = new 、、、、
在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception
另外你的代码按如下写会更合理:
if(null != in){
try{
in.flush();
in.close();
in = null;
}
catch(IOExection e){};
}
Ⅹ java io流的关闭问题。
你BufferedReader是通过fileReader来的,相当于你关闭br后就直接关闭了FileReader,最后建议你把br=null;
和这个相反你可以参考一下rs和con的关系