This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
It depends on the file system, but assume there is no synchronization. If one thread or process* deleted the file mere nanoseconds after File.exists() has returned true the file no longer exists even though your program thinks it does. This isn't something you can do much about I fear.
* After all, the file can also be deleted from Explorer, or another program.