In FileUtil.unTarUsingJava() method, we did not close input steams explicitly upon finish. This could lead to a file handle leak on Windows.
I discovered this when investigating the unit test case failure of TestFSDownload.testDownloadArchive(). FSDownload class will use FileUtil.unTarUsingJava() to unpack some temporary archive file. Later, the temporary file should be deleted. Because of the file handle leak, the File.delete() method fails. The test case then fails because it assert the temporary file should not exist.