public class Solution { public static void main(String[] args) { Scanner scanner=new Scanner(new BufferedInputStream(System.in)); Map<Integer, String> fileNameList=new TreeMap<>(); while (true){ String incommingMessage=scanner.nextLine(); if(incommingMessage.equals("end")) break; fileNameList.put(Integer.parseInt(incommingMessage.substring(incommingMessage.indexOf(".partN")+5)), incommingMessage); } File into=new File(fileNameList.get(0).substring(0,fileNameList.get(0).indexOf(".part"))); try (FileOutputStream fos = new FileOutputStream(into); BufferedOutputStream mergingStream = new BufferedOutputStream(fos)) { for (String fileName : fileNameList.values()) { Path p= Paths.get(fileName); Files.copy(p, mergingStream); Files.delete(p); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(fileNameList); } }