Рубрики
Без рубрики

Размер файла в Java

Примеры того, как получить размер файла в Java.

Автор оригинала: baeldung.

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, поэтому его должно быть легко импортировать и запускать как есть.