IO处理要注意的事:关闭资源!关闭资源!关闭资源!

时间:2022-07-13 05:07:46

案例1:

现象:

  同事做本地txt数据切分然后处理,发现删除本地临时文件目录中的文件时,有时成功,有时删除完了发现文件还在。代码各处都不报错,且各种日志打印正常。

解决:

  最后发现,是业务逻辑代码中有一处FileInputStream流读取文件后,没有关流,导致的。

--------

案例2:

现象:

  同事往远程FTP服务器上上传txt文件,在两处业务逻辑中调用同一个上传工具类方法(此方法为他自己写的),发现一个可以成功上传,而另一处调用上传完FTP上没有文件。

解决:

  各种折腾,最后发现,因为其使用的是在业务逻辑代码前先建立连接到FTP,然后在下面的业务逻辑中各种操作,然后有的地方建立连接后,又 ftpClient.logout(); 退出了,而有的地方使用完,却没有 ftpClient.logout();

总结:

使用IO时,一定要注意,各种流在使用完一定要马上关闭,否则在复杂的代码中可能造成各种不易查找的奇怪问题。

使用远程连接(如FTP)时,一定要注意资源的打开和关闭要成对出现。最好把每种操作都封装成独立的打开资源、处理资源、关闭资源一个方法中。尽量不要打开资源后就一通几百行代码的操作,最后也不知道在哪需要关闭资源。