Это тонна кода, но я думаю, что проблема может быть просто в вашем цикле while. У вас есть:
while (!inputFile.equals("exit") || (!outputFile.equals("exit")))
Таким образом, цикл завершится, если вы введете команду exit и для входного, и для выходного файла. Однако вы проверяете ввод только один раз, когда два файла используются впервые. Если вы хотите, чтобы цикл каждый раз брал два новых имени файла, вам нужно будет добавить это в конце цикла while, что-то вроде harshit. Если вы добавите String inputFile = inputFileName();
и String outputFile = outputFileName();
в конце цикла while, вы будете вводить новые имена файлов каждый раз, когда происходит цикл, и вы сможете выйти из него.