Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
loadFileAsBytes(file,buf,0,buf.length);
}
public static void loadFileAsBytes(
File file, byte[] buf, int off, int len)
throws IOException
{
FileInputStream f= new FileInputStream(file);
try {
f.read(buf,off,len);
} finally {
try {f.close();} catch (Exception e) {};
}
}
Используется вариант FileInputStream байтового потока InputStream.
Обратите внимание: если файл удалось открыть (конструктор FileInputStream успешно сработал), то мы закрываем файл в любом случае, даже если процесс чтения оборвался из-за исключения. Однако исключения в процессе закрытия файла мы игнорируем. Действительно, если предыдущее чтение произошло безошибочно, т.е. мы успешно прочитали весь файл, то на невозможность закрыть файл можно не обращать внимания (тем более, что ошибка на этом этапе чрезвычайно маловероятна). Если же исключение произошло в процессе чтения, то, очевидно, оно представляет больший интерес, чем ошибка при попытке закрыть файл. Значит, «наружу» следует выдать именно исключение, связанное с чтением. Если бы мы не проигнорировали исключения при закрытии файла, то мы, в соответствии с известным неудобным свойством Java, рисковали бы «потерять» исключение при чтении файла в методе f.read().
Обращение к методу length() во втором варианте функции loadFileAsBytes достаточно «безопасно». Этот метод не порождает исключений, а при отсутствии файла или других возможных проблемах просто возвращает 0, что в данном контексте не приведет ни к чему плохому.
Запись файла:
public static void saveFileFromBytes(
String fileName, byte[] buf)
throws IOException
{
saveFileFromBytes(new File(fileName),buf);
}