
java客户端接受文件后文件还被线程占用 20
我现在要做一个服务器端向多个客户端发送文件的程序。我把服务器和客户端的位置调换了,就是客户端一直监听状态,服务器端则不用。现在就有问题了,客户端通过监听接受到文件后,文件...
我现在要做一个服务器端向多个客户端发送文件的程序。
我把服务器和客户端的位置调换了,就是客户端一直监听状态,服务器端则不用。
现在就有问题了,客户端通过监听接受到文件后,文件还不能使用,点击会提示文件被java占用,只有关闭客户端的程序才能使用。
怎么样不关闭客户端就能使用文件? 展开
我把服务器和客户端的位置调换了,就是客户端一直监听状态,服务器端则不用。
现在就有问题了,客户端通过监听接受到文件后,文件还不能使用,点击会提示文件被java占用,只有关闭客户端的程序才能使用。
怎么样不关闭客户端就能使用文件? 展开
5个回答
展开全部
客户端这边的output对象要关闭,然后清空缓存区域
out.flush();
out.close();
你要注意是不是在客户端监听那个方法里面没有释放文件输入流对象。所以才一直占用。
我觉得出现你这样的问题是因为你socket传输规则有问题。没有提示程序是否接收完毕,所以客户端会一直卡在read方法那里。接收回来的文件对象也没有释放,建议socket传输规则 [文件长度|文件内容] 就是说先接收前面4(你自己定义的)个字节获取整个流的长度。然后在接着读流,这个长度读完了,说明文件接收完。就跳出循环结束接收数据。
out.flush();
out.close();
你要注意是不是在客户端监听那个方法里面没有释放文件输入流对象。所以才一直占用。
我觉得出现你这样的问题是因为你socket传输规则有问题。没有提示程序是否接收完毕,所以客户端会一直卡在read方法那里。接收回来的文件对象也没有释放,建议socket传输规则 [文件长度|文件内容] 就是说先接收前面4(你自己定义的)个字节获取整个流的长度。然后在接着读流,这个长度读完了,说明文件接收完。就跳出循环结束接收数据。
展开全部
接收文件后关闭io流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘿嘿,笨啊,把IO关闭就可以使用这个文件了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你没关闭
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |