Style-nit: We prefer:

  BufferedReader reader = new BufferedReader(...);
  try {
  } finally {
    reader.close();
  }

That way there isn't a risk of reader staying initialized to null if something is wrong with the code.