среда, 12 сентября 2007 г.

Java Puzzle 41: Field and Stream

Копируем содержимое файла. При окончании процесса копировани закрываем потоки. Или нет?
static void copy(String in, String out) throws IOException {
    InputStream input = null;
    OutputStream output = null;
    try {
        input = new FileInputStream(in);
        output = new FileOutputStream(out);
        byte[] array = new byte[1024];
        int count;
        while ((count = input.read(array)) >= 0) {
            output.write(array, 0, count);
        }
    } finally {
        if (input != null) input.close();
        if (output != null) output.close();
    }
}
Ну да! Как и ожидалось при возникновении ошибки при закрытии первого потока второй закрыт не будет. Главный урок этой задачи: обрабатывайте любые проверяемые исключения, которые могут произойти в блоке finally.

Комментариев нет:

Отправить комментарий