1. Обзор
В этом кратком руководстве мы узнаем, как получить размер файла в Java – с помощью Java 7, новой Java 8 и общего ввода-вывода Apache.
Наконец, мы также получим удобочитаемое представление размера файла.
2. Стандартный ввод-вывод Java
Давайте начнем с простого примера вычисления размера файла – с помощью метода | File.length() :
private long getFileSize(File file) { long length = file.length(); return length; }
Мы можем протестировать нашу реализацию относительно просто:
@Test public void whenGetFileSize_thenCorrect() { long expectedSize = 12607; File imageFile = new File("src/test/resources/image.jpg"); long size = getFileSize(imageFile); assertEquals(expectedSize, size); }
Обратите внимание, что по умолчанию размер файла рассчитывается в байтах.
3. С Java NIO
Далее – давайте посмотрим, как использовать библиотеку NIO, чтобы получить размер файла.
В следующем примере мы будем использовать API FileChannel.size () , чтобы получить размер файла в байтах:
@Test public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException { long expectedSize = 12607; Path imageFilePath = Paths.get("src/test/resources/image.jpg"); FileChannel imageFileChannel = FileChannel.open(imageFilePath); long imageFileSize = imageFileChannel.size(); assertEquals(expectedSize, imageFileSize); }
4. С Apache Commons IO
Далее – давайте посмотрим, как получить размер файла с помощью Apache Commons IO . В следующем примере – мы просто используем FileUtils.sizeOf() для получения размера файла:
@Test public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() { long expectedSize = 12607; File imageFile = new File("src/test/resources/image.jpg"); long size = FileUtils.sizeOf(imageFile); assertEquals(expectedSize, size); }
Обратите внимание, что для файлов с ограничениями безопасности FileUtils.sizeOf() сообщит размер как ноль.
5. Удобочитаемый Размер
Наконец, давайте посмотрим, как получить более читаемое пользователем представление размера файла с помощью Apache Commons IO – не только размер в байтах:
@Test public void whenGetReadableFileSize_thenCorrect() { File imageFile = new File("src/test/resources/image.jpg"); long size = getFileSize(imageFile); assertEquals("12 KB", FileUtils.byteCountToDisplaySize(size)); }
6. Заключение
В этом уроке мы проиллюстрировали примеры использования Java и Apache Commons IO для вычисления размера файла в файловой системе.
Реализацию этих примеров можно найти в проекте GitHub – это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.