Qualcuno saprebbe spiegarmi riga x riga, cosa fa queta porzione di programma?

try {
FileReader f_in = new FileReader (args[0]);

BufferedReader in = new BufferedReader (f_in);

int i=0;

while ( in.ready() )

{

buffer=in.readLine();

buffer=buffer.trim();// cosa fà il metodo trim?

//cre il cluster

c[i]=new Cluster(buffer);
i++;

}
f_in.close();
} catch (Exception e) { System.out.println("errore" + e); }