prima versione del punto a
aggiunge la stampa del tempo impiegato

vincenzo non sa usare "time" quindi tocca per forza stampargli il
numero di secondi impiegati dal programma per leggere i txt e creare il
file di output
usa un BufferedOutputStream per la scrittura del file

FileOutputStream non gestisce il buffering quindi ad ogni write il
contenuto viene scritto direttamente su disco. Inoltre il newline è
trattato separatamente quindi ci sono n * 2 chiamate per ogni riga che
andrà a finire nel file finale.

Usando il BufferedOutputStream è possibile aggregare m righe a seconda
della dimensione del buffer riducendo il numero di scritture su disco.
cambia le dimensioni dei buffer usati

usa un 1mb come buffer per la lettura dei file e uno da 16mb per la
scrittura del file generato
rimuove il package

in questo modo non si devono mettere i class in una cartella contest e
risulta più facile provare il programma
import iniziale della seconda versione
ignora i caratteri i return

risolve il problema delle righe vuote nei file creati su windows. sul
sistema di mamma microsoft l'acapo è dato dalla sequenza \r\n e non dal
solo \n come su unix.
alloca il buffer una sola volta

creare un nuovo buffer per ogni ciclo non serve. Usando flip() è
possibile riutilizzarlo anche per il resto delle scritture.