1. Общ преглед
В този бърз урок ще научим как да получим размера на файл в 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, за да получим размера на файла.
В следващия пример ще използваме 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, така че трябва да е лесно да се импортира и да се изпълнява както е.