Размер файла в Java
1. обзор
В этом кратком руководстве мы узнаем, как получитьsize of a file in Java - с использованием Java 7, новой Java 8 и Apache Common IO.
Наконец, мы также получим удобочитаемое представление размера файла.
2. Стандартный Java IO
Начнем с простого примера расчета размера файла с помощью метода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, чтобы получить размер файла.
В следующем примере мы воспользуемся APIFileChannel.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 для вычисления размера файла в файловой системе.
Реализацию этих примеров можно найти вthe GitHub project - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.