In getChunkFile internally, it invokes "verifyChunkDirExists". This causes file existence checks for the directory and throws IO exception accordingly. If the file is anyways going to be written, it is better to handle it later and throw the same exception. This could avoid file checks for every "writechunk"
File channels are cached anyways in "OpenFiles". So if we can avoid "file.getAbsolutePath()", this could save memory and resolving paths.
Also "validateChunkForOverwrite" can be optimised, as "isOverWritePermitted" would be false most of the times.