FileUtils.readFileToString has changed it's behavior to make a call from IOUtils.toByteArray(in) to IOUtils.toByteArray(in, file.length()) in FileUtils.readFileToString. This is a regression because if the file.length = 0, then it will return 0. According to the javadocs for File#length, it is possible to return 0 if it is a System dependent entities, so even though the File.length might return 0, the stream is still open and
Steps to reproduce (Ubuntu):
1. Execute nohup sleep 10000 & in a terminal, and get the process id of the sleep command (ps -ef | grep sleep).
2. Call FileUtils.readFileToString(new File("/proc/$PID/environ")); where $PID is the process ID from step 1.
You will notice that in 2.0.1 it returns several elements, however in 2.1 it will return nothing.