ПОЧЕМУ ВОЗВРАЩАЕТСЯ Object? как получить назад массив? (см. комментарий)
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String fileName;
        TreeMap<String, byte[]> map = new TreeMap<>();
        FileInputStream input;
        String key = null;
        byte[] buffer;
        Pattern p;
        String newName = null;
        String fName = null;
        while (!(fileName = r.readLine()).equals("end")) {
            input = new FileInputStream(fileName);
            buffer = new byte[input.available()];
            input.read(buffer);
            p = Pattern.compile("\\.part\\d+$");
            Matcher m = p.matcher(fileName);
            if (m.find()) {
                key = m.group();
            }
            map.put(key, buffer);              //помещаем ключ и массив
            key = null;
            buffer = null;
            input.close();
            if (!fileName.equals("end")) fName = fileName;

        }
        r.close();
        Pattern p2 = Pattern.compile(".+?(?=\\.part\\d+$)");
        //System.out.println(fName);
        Matcher m2 = p2.matcher(fName);
        if (m2.find()){
            newName = m2.group();
            //System.out.println(newName + " ");
        }
        File file = new File(newName);
        file.createNewFile();
        FileOutputStream out = new FileOutputStream(newName);
        for(Map.Entry e: map.entrySet()){
            Object[] objects = (Object[])e.getValue(); //ПОЧЕМУ ВОЗВРАЩАЕТСЯ Object? как получить назад массив? ClassCastException: [B cannot be cast to [Ljava.lang.Object;
            byte[] b = (byte []) objects[0];
            out.write(b);
        }
        out.close();
    }