The use of file.exists() is failure prone. In many cases the jvm can report that a file does not exist even when it does. This is due to the caching in the operating system.
Since file.exists() is prone to report false values, a second check can and should be made to file.length()>0.
Where file.exists() is checked, it should be replaced with the following dual check:
A file more reliably exists if: file.exists() || file.length()>0
Then if the file does not exist, file.length will be 0.