Dropwizard utility classes for data sizes, durations, enums, generics, resources, exceptions, JAR locations, and direct execution services.
—
Data size management capabilities for handling sizes with SI and IEC prefix support, including human-readable parsing and unit conversion.
The DataSize class represents an immutable, thread-safe data size with support for various units and human-readable parsing.
Create DataSize instances using SI (decimal) prefixes:
public static DataSize bytes(long count);
public static DataSize kilobytes(long count);
public static DataSize megabytes(long count);
public static DataSize gigabytes(long count);
public static DataSize terabytes(long count);
public static DataSize petabytes(long count);Create DataSize instances using IEC (binary) prefixes:
public static DataSize kibibytes(long count);
public static DataSize mebibytes(long count);
public static DataSize gibibytes(long count);
public static DataSize tebibytes(long count);
public static DataSize pebibytes(long count);Parse human-readable strings into DataSize objects:
public static DataSize parse(CharSequence size);
public static DataSize parse(CharSequence size, DataSizeUnit defaultUnit);Parameters:
size - String representation like "128 MB", "5 GB", "1024 bytes"defaultUnit - Unit to use when no unit is specified in the stringSupported Formats:
Throws:
IllegalArgumentException - If the input cannot be parsed or contains invalid unitspublic long getQuantity();
public DataSizeUnit getUnit();Convert to specific units:
public long toBytes();
public long toKilobytes();
public long toMegabytes();
public long toGigabytes();
public long toTerabytes();
public long toPetabytes();
public long toKibibytes();
public long toMebibytes();
public long toGibibytes();
public long toTebibytes();
public long toPebibytes();Standard object methods:
public boolean equals(Object obj);
public int hashCode();
public String toString();
public int compareTo(DataSize other);Enumeration of data size units supporting both SI (decimal) and IEC (binary) prefixes.
SI (Decimal) Units:
BYTES(8L) // 8 bits
KILOBYTES(8L * 1000L) // 1000 bytes
MEGABYTES(8L * 1000L * 1000L) // 1000 kilobytes
GIGABYTES(8L * 1000L * 1000L * 1000L) // 1000 megabytes
TERABYTES(8L * 1000L * 1000L * 1000L * 1000L) // 1000 gigabytes
PETABYTES(8L * 1000L * 1000L * 1000L * 1000L * 1000L) // 1000 terabytesIEC (Binary) Units:
KIBIBYTES(8L * 1024L) // 1024 bytes
MEBIBYTES(8L * 1024L * 1024L) // 1024 kibibytes
GIBIBYTES(8L * 1024L * 1024L * 1024L) // 1024 mebibytes
TEBIBYTES(8L * 1024L * 1024L * 1024L * 1024L) // 1024 gibibytes
PEBIBYTES(8L * 1024L * 1024L * 1024L * 1024L * 1024L) // 1024 tebibytespublic long convert(long size, DataSizeUnit unit);Parameters:
size - The magnitude of the sizeunit - The source unit to convert fromReturns: The converted size in the current unit
Convert to specific units:
public long toBytes(long l);
public long toKilobytes(long l);
public long toMegabytes(long l);
public long toGigabytes(long l);
public long toTerabytes(long l);
public long toPetabytes(long l);
public long toKibibytes(long l);
public long toMebibytes(long l);
public long toGibibytes(long l);
public long toTebibytes(long l);
public long toPebibytes(long l);// Create using factory methods
DataSize oneGb = DataSize.gigabytes(1);
DataSize oneMb = DataSize.megabytes(1);
DataSize oneKib = DataSize.kibibytes(1024);
// Get quantity and unit
long quantity = oneGb.getQuantity(); // 1
DataSizeUnit unit = oneGb.getUnit(); // GIGABYTES// Parse various formats
DataSize size1 = DataSize.parse("128 MB");
DataSize size2 = DataSize.parse("5 GB");
DataSize size3 = DataSize.parse("1024 KiB");
DataSize size4 = DataSize.parse("500"); // Uses default unit (bytes)
DataSize size5 = DataSize.parse("500", DataSizeUnit.KILOBYTES); // 500 KB
// Case insensitive and flexible spelling
DataSize flexible1 = DataSize.parse("128 mb");
DataSize flexible2 = DataSize.parse("5 gigabytes");
DataSize flexible3 = DataSize.parse("1024 kibibyte");DataSize original = DataSize.parse("1 GB");
// Convert using DataSize methods
long bytes = original.toBytes(); // 1,000,000,000
long kilobytes = original.toKilobytes(); // 1,000,000
long megabytes = original.toMegabytes(); // 1,000
// Convert using DataSizeUnit methods
long convertedBytes = DataSizeUnit.BYTES.convert(1, DataSizeUnit.GIGABYTES);
long convertedKb = DataSizeUnit.KILOBYTES.convert(1, DataSizeUnit.GIGABYTES);DataSize size1 = DataSize.megabytes(500);
DataSize size2 = DataSize.gigabytes(1);
// Comparison (compares based on byte values)
int comparison = size1.compareTo(size2); // negative (500 MB < 1 GB)
// Equality (compares quantity and unit exactly)
DataSize mb500a = DataSize.megabytes(500);
DataSize mb500b = DataSize.megabytes(500);
boolean equal = mb500a.equals(mb500b); // true
// Note: Different units with same byte value are NOT equal
DataSize bytes1000000 = DataSize.bytes(1000000);
DataSize megabyte1 = DataSize.megabytes(1);
boolean equalBytes = bytes1000000.equals(megabyte1); // false (different units)
boolean equalComparison = bytes1000000.compareTo(megabyte1) == 0; // true (same byte value)DataSize size = DataSize.gigabytes(2);
String str = size.toString(); // "2 gigabytes"
DataSize singleUnit = DataSize.gigabytes(1);
String singleStr = singleUnit.toString(); // "1 gigabyte" (singular)The parsing methods throw IllegalArgumentException for invalid input:
try {
DataSize.parse("invalid size"); // Throws IllegalArgumentException
} catch (IllegalArgumentException e) {
// Handle parsing error
}
try {
DataSize.parse("128 XB"); // Throws IllegalArgumentException (unknown unit)
} catch (IllegalArgumentException e) {
// Handle unknown unit error
}Install with Tessl CLI
npx tessl i tessl/maven-io-dropwizard--dropwizard-util