У меня есть следующий код, который прекрасно работает в моем классе, читая файл построчно.
try { FileInputStream in = new FileInputStream(filename);
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String line;
while((line=reader.readLine())!=null){
// read the file
}
}
catch (Exception e) {
System.out.println(e);
}
Но если я попытаюсь добавить команду close, ибо после того, как файл закончил чтение, то я получаю ошибку:
in.close();
Error:(131, 9) java: cannot find symbol
symbol: variable in
location: class ReadFile
Я искал об очистке объектов после использования и необходимости закрывать файлы до завершения вашей программы. И нашел несколько сообщений об этом для Java, но многие из них очень противоречивы. Дело в том, что в конце концов я просто очень запутался.
Я ошибаюсь, или программирование на Java немного нечеткое и запутанное? Я имею в виду, что, по-видимому, нет реального использования деструктора, использование finalize очень сомнительно, и использование close также предлагается как ненужный. Некоторые из сообщений по этим вопросам противоречивы и неубедительны.
Итак, как действовать здесь? В случае, если мне действительно нужно закрыть файл, как избавиться от этого сообщения об ошибке? Действительно ли закрытие файлов является необязательным и ненужным? Как насчет очистки экземпляров класса для завершения программы?
in.close()
? Помните, что в Java масштаб имеет значение. - person Pradeep Simha   schedule 08.05.2014in
за пределами вашего блока try. - person Pradeep Simha   schedule 08.05.2014try-with-resources
вместо того, чтобы писать уродливую попытку-поймать-наконец. - person Siyuan Ren   schedule 08.05.2014