|
文件流操作的深刻体验!(删除文件与文件流关闭)
今天写一个程序,功能是从一个文件夹A拿rar文件到另一个文件夹B,然后将rar文件解压缩到文件夹C,在文件夹C中进行文件操作后删除C中所有的文件,以达到重复利用的目的。
经观察发现,用同一个rar文件进行测验,每次解压缩时都会弹出窗口提示文件夹C中有同名文件存在是否需要删除,这显然不利于命令行方式的调用。为什么写的文件删除操作
不能达到目的呢?一开始怀疑过java的delete()函数不能达到目的,在这方面“动”了很多脑筋啊... ,甚至怀疑是方法的缺陷。问题最后确定在file.delete()函数前后 file.exists() 为true;
这才追溯到文件处理模块中读取过文件,然而两个文件处理模块都没有文件流关闭操作;在两个模块的catch前加上 fis.close()函数,其中一个起作用了,另外一个不起作用。
这时候干脆在catch模块的最后加上 finally{}模块,也就是说无论如何程序总会执行该模块,保证文件流读取后会关闭掉(注:后面提到的文件处理模块很多return,故在finally模块关闭流。)。
插曲:回想以前就对文件流关闭的细节没有注意,也没养成良好的习惯,心想程序结束后文件流总会关闭的;但是,如果该程序被其它程序调用而不关闭流,就影响了对文件的其它操作(如删除文件)。
加班到此刻,在此作一小记~ |
|