Как узнать размер java-файла

Обновлено: 21.11.2024

В этом руководстве мы узнаем, как получить размер файла в Java. Сначала мы увидим некоторую теоретическую информацию, а затем мы увидим пример реализации.

Дополнительную информацию о файловом вводе-выводе в Java можно найти в нашей серии руководств по файловому вводу-выводу в Java. В этой серии руководств мы объясним все основы ввода-вывода файлов вместе с подробным объяснением.

Приступим к обучению.

Обзор получения размера файла в Java

В Java мы можем использовать File.size(path), чтобы получить точный размер файла в байтах. Ниже приведен пример кода, который поможет вам понять, как мы можем использовать это в приложении.

Сначала мы посчитаем его в байтах, а затем разделим байты на 1024, чтобы преобразовать их в килобайты.

Получить размер файла с помощью Files.size()

Давайте рассмотрим пример получения размера файла в Java с помощью метода Files.size(path).

Вывод

Приведенный выше способ получения размера файла в Java является одним из наиболее часто используемых методов разработчиками Java. Но до того, как была представлена ​​Java 7, большинство разработчиков использовали устаревший метод ввода-вывода File.length() для получения размера файлов в Java.

Вы можете ясно видеть, что в этом примере мы использовали разные форматы, чтобы показать пример расчета размера в различных форматах, таких как КБ (килобайты), ГБ (гигабайты), ТБ (терабайты), ПБ (петабайты). и т. д.

Подход File.length()

Ниже приведен пример кодирования с помощью устаревшего метода File.length() File IO.

Вывод

Это основная информация о том, как получить размер файла. Но если вам нужна более подробная информация и вы хотите прочитать официальную документацию, вы можете просто посетить документацию File.size.

Заключение

На этом уроке все. Надеюсь, вы понимаете, как мы можем получить размер файла.

Пожалуйста, поделитесь этим руководством с другими, если вы найдете его информативным, и поделитесь своими мыслями в разделе комментариев ниже.

Содержание Преобразование OutputStream в байтовый массив в JavaПреобразование OutputStream в байтовый буфер в Java В этом посте мы увидим, как преобразовать OutputStream в байтовый массив в Java. Преобразование массива OutputStream в массив байтов в Java Вот шаги для преобразования массива OutputStream в байты в java. Создать экземпляр ByteArrayOutputStream baos Записать данные в […]

Как получить текущий рабочий каталог в java

Узнайте, как получить текущий рабочий каталог в Java разными способами

Разница между Scanner и BufferReader в Java

СодержаниеВведениеScannerBufferedReaderРазница между Scanner и BufferedReader В этом посте мы увидим разницу между Scanner и BufferReader в java. В Java есть два класса, которые уже очень давно используются для чтения файлов. Этими двумя классами являются Scanner и BufferedReader. В этом посте мы найдем основные различия и сходства […]

Чтение данных в кодировке UTF-8 в java

СодержаниеИспользование метода newBufferedReader() в FilesИспользование BufferedReaderИспользование метода readUTF() в DataInputStream В этом посте мы увидим, как читать данные в кодировке UTF-8. Иногда нам приходится иметь дело с данными в кодировке UTF-8 в нашем приложении. Это может быть связано с локализацией или обработкой данных, введенных пользователем. Существует несколько способов чтения данных в кодировке UTF-8 […]

Запись данных в кодировке UTF-8 в java

СодержаниеИспользование метода newBufferWriter() в FilesИспользование BufferedWriterИспользование метода writeUTF() в DataOutputStream В этом посте мы увидим, как записывать данные в кодировке UTF-8. Иногда нам приходится иметь дело с данными в кодировке UTF-8 в нашем приложении. Это может быть связано с локализацией или обработкой данных, введенных пользователем. Мы будем использовать предложения на языке хинди, чтобы писать […]

Java читать файл построчно

Содержание Java 8 StreamsИспользование BufferReaderИспользование ScannerИспользование файловИспользование RandomAccessFileИспользование Apache Commons В этом посте мы увидим различные способы чтения файла построчно в java. Иногда нам нужно прочитать файл построчно в строку и обработать его. Вот разные способы чтения файла построчно в java. Java […]

В этом руководстве мы рассмотрим, как получить размер файла в Java. Класс Java File позволяет получить размер файла в байтах. Чтобы получить размер файла, вызовите метод length() класса File. Вот пример получения размера файла с помощью метода length().

Как получить размер файла в Java

MCQ Попрактикуйтесь в соревновательных и технических вопросах и ответах с множественным выбором (MCQ) с простыми и логичными объяснениями, чтобы подготовиться к тестам и собеседованиям. Подробнее

Вам также может понравиться

Как перебирать ArrayList в Java

Как сгенерировать пароль с помощью Java

Проверить, является ли число палиндромом в Java

Оставить ответ Отменить ответ

Последние публикации

Что такое Web Worker в JavaScript?

В этом руководстве мы рассмотрим, что такое Web Worker в JavaScript? Web Worker позволяет нам

Как отсортировать массив строк в JavaScript?

О нас


Научитесь программировать на разных языках программирования, таких как PHP, Java, Python, C/C++ и т. д., а также на таких фреймворках, как Laravel, Django, Spring и т. д., с помощью наших простых руководств, примеров, упражнений, mcq. и ссылки.

В отличие от таких языков, как C/C++, в которых есть функция sizeof() для получения размера памяти любого объекта, в Java нет такого прямого метода. Тем не менее, в Java можно получить размер объекта с помощью его инструментального пакета.

Пакет инструментов в Java используется для инструментирования любого кода Java и получения сведений о нем. Это распространенный метод анализа, изначально поддерживаемый в Java с помощью пакета. Короче говоря, в этой технике мы вставляем код в исходный код, чтобы отслеживать изменения и производительность. При внесении изменений исходный код остается неизменным, поэтому это хороший инструмент анализа.

Чтобы импортировать этот пакет, нам нужно использовать это:

Для реализации этого мы создадим класс Java с именем ObjectSize. Первым шагом является создание объекта инструментирования в качестве закрытого члена класса следующим образом:

Нам нужно использовать premain механизм пакета. Короче говоря, он позволяет «агентам» (конкретным методам) загружаться и вносить изменения в байт-код в коде Java. Он использует jar, который делает запись в своем файле манифеста, указывающую на функцию premain. Для нашего примера мы определим простую функцию premain следующим образом:

После этого мы можем использовать метод пакета getObjectSize(). Он вставит байт-код в ваш код, который рассчитает размер любого объекта. Есть несколько подходов, с помощью которых это достигается в Java, и самый простой способ зафиксировать общий объем памяти, используемый на разных этапах, для вычисления этой информации.

Мы можем создать функцию sizeof() следующим образом:

Полный код (сохраните в файле Sizeof.java):

Мы создадим файл манифеста в корневом каталоге проекта с расположением и именем (META-INF/MANIFEST.MF) следующим образом:

Мы можем создать jar-файл нашего класса, используя следующую команду в командной строке:

Будет создан файл Sizeof.jar.

После этого мы можем написать любой код Java, скажем, в файле code.java, и использовать эту функцию, чтобы напрямую получить размер любого объекта:

Код должен быть скомпилирован и запущен следующим образом:

В этом примере code — это имя нашего класса.

Пример

В этом примере мы создадим простую программу для вычисления размера int, float и string с помощью созданной нами выше утилиты:

Обратите внимание, что приведенные выше размеры совпадают, поскольку мы не инициализировали переменные, и, следовательно, все три переменные предназначены для адреса памяти.

Теперь инициализируем переменные и затем проверим размер:

Для int size = memory + int size = 16 + 32 = 48

Для числа с плавающей запятой размер = память + размер с плавающей запятой = 16 + 32 = 48

Для строки размер = память + размер символа * количество символов
= 16 + 8 * 9 = 16 + 72 = 88

Давайте воспользуемся определяемым пользователем объектом, имеющим массив из 10 целых чисел в качестве переменной-члена:

Это 16 бит, так как в нем хранится только адрес объекта, так как конструктора, определяемого пользователем, нет.

То же самое происходит, если мы используем объект по умолчанию, используя класс Object Java:

Следовательно, любой объект имеет два компонента памяти:

  • 16 бит для памяти (зависит от системы)
  • память для инициализированных данных

Аналогичным образом вы можете использовать этот метод для мгновенного вычисления размера любого объекта в Java.

Фонд OpenGenus

Официальный аккаунт OpenGenus IQ при поддержке GitHub, DigitalOcean и Discourse

Читайте также: