I don't understand why you are resorting to the use of Runtime.exec() since I see nothing in your code that cannot be done in pure Java.
Having said that, addressing your immediate problem, you are not handling either the stdout or stderr streams associated with the Process objects generated by Runtime.getRuntime().exec(commandSortFileNew1) and you do not seem to be looking at the exit status code of the Process object. I know that you are not expecting anything on the Process stdout stream since you are redirecting the sort to a file but it is as well to purge it anyway.
Now why should you do all this? The stdout and stderr write to internal buffers and when either fills the Process is halted until more space becomes available BUT you are not reading from the stdout and stderr so no more space becomes available and you get a deadlock. If you do not process the Process exit code then you have no idea whether the command succeeded or failed. Now this may not be the cause of your problem but writing out the content to your console will probably give you an idea as to what is wrong.
You need to process stdout and stderr in two different threads. You can use the current execution
thread for one stream and then a new thread for the other.
All this and more is explained in
http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html .
The extra code required for this is quite significant and you may want to think about going back to a pure Java solution.