You need to display the size of a file in kilobytes, megabytes, or gigabytes. Instead of displaying file sizes as 1,073,741,824 bytes, you want an approximate, human-readable size, such as 1 GB.
Use FileUtils.byteCountToDisplaySize() to produce a String
containing an approximate, human-readable size. The following code
passes the number of bytes in the file project.xml to FileUtils.byteCountToDisplaySize( ):
import org.apache.commons.io.FileUtils;
try {
File file = new File("project.xml");
long bytes = file.length( );
String display = FileUtils.byteCountToDisplaySize( bytes );
System.out.println("File: project.xml");
System.out.println(" bytes: " + bytes );
System.out.println(" size: " + display );
} catch( IOException ioe ) {
System.out.println( "Error reading file length." );
}This code prints out the number of bytes in the project.xml file, and the human-readable size
"2 KB":
File: project.xml bytes: 2132 size: 2 KB
FileUtils contains three static
variables—FileUtils.ONE_KB, FileUtils.ONE_MB, and FileUtils.ONE_GB—which represent the number of
bytes in a kilobyte, megabyte, and gigabyte. FileUtils.byteCountToDisplaySize( ) divides
the number of bytes by each constant until it finds a constant that can
divide the number of bytes, discarding the remainder to create a
human-readable value. For example, the value 2,123,022 is divided by
FileUtils.ONE_GB, which returns a
value of less than 1.0. The value is then divided by FileUtils.ONE_MB, which returns 2—the value
used in the human-readable size "2 MB."
