Reading and writing of files should only be done using try-with-resources. This might not be an issue on Linux, but it is a serious issue on Windows where I repeatedly get conflicts with GWT DevMode server not releasing file handles, ie. resulting in situations where it cannot even read its own cache files.
One example: Output.openSourceFile returns a file input stream. SourceHandler.makeSourcePage then does
return Responses.newBinaryStreamResponse("text/plain", pageBytes);
where it eventually might get closed if no error happens... and on top of that the stream is kept open as long as the client wishes to stall reading the response data.
I suggest setting up a GWT-internal standard for handling file resources. My recommendation would be to use try-with-resources and processing a file copy that is stored fully in RAM.