По сути, я хочу открыть файл, прочитать несколько байтов, а затем закрыть файл. Вот что я придумал:
try
{
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
try
{
// ...
inputStream.read(buffer);
// ...
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try
{
inputStream.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Может быть, я избалован RAII, но должен быть лучший способ сделать это на Java, верно?
catch
, распространив исключение. Конечно, вы не можете избавиться от предложенияfinally
, если хотите правильно закрыть файл. Однако, с моей точки зрения, это незначительное неудобство, и оно будет устранено Java 7, как я уже упоминал в ответе. Основная причина, по которой автоматическое управление ресурсами не так полезно в Java, как в C++, связана с GC. И я в основном использую C++ BTW, поэтому я не сторонник Java. - person vitaut   schedule 06.06.2011finally
. - person jalf   schedule 06.06.2011buffer = readAllBytes();
Теперь ваша очередь =D - person vitaut   schedule 06.06.2011close()
: stackoverflow.com/questions/7849416/ - person Raedwald   schedule 21.10.2011