Я буду читать лекцию по Java для студентов-физиков, и я хотел бы знать, как правильно открыть файл.
Во многих моих профессиональных приложениях я делал что-то подобное:
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file")));
try{
....
}finally {
bufferedWriter.close();
}
что имхо нормально, т.е. читатель всегда будет закрыт.
Когда я описывал это в качестве примера для моих учеников, мне было интересно, что произойдет, если конструктор InputStreamReader
сгенерирует исключение --- FileInputStream будет открыт, но он не будет закрыт моим кодом (так как эти объекты создаются вне блока try-finally.
Так это правильная идиома, и если да, то почему? Если неправильно открывать поток, пожалуйста, укажите мне правильный!
Редактировать : Я ищу идиому, которая является правильной и очень простой для написания и понимания , студенты-физики - новички в программировании.
Редактировать : Глупый я, я скопировал неправильный пример - если вместо читателей я использую Writers, это становится более сложным.