Converting File Size from Bytes to KB in grails

Viewed 43

I have the following code for my GSP page:

<div class='fieldcontain required'>
         <leve><b>Banner File Size:</b></leve>
         <leve>${this.game.bannerData.size()}</leve>
</div>

This is how my domain looks like:

class Game {

    @Deprecated
    byte[] thumbnailData
    Document thumbnail
    String thumbnailContentType
    String thumbnailFileName

    static hasMany = [requiredSkills: SkillLevel, maxScores: Integer]

    static constraints = {

        thumbnailData nullable: true, display: false
        thumbnailContentType nullable: true, display: false
        thumbnailFileName nullable: true, display: false

    }

    static mapping = {

        thumbnailData column: 'thumbnail', type: 'image'
        bannerData column: 'banner', type: 'image'
    }

What logic should I use so that ${this.game.bannerData.size()} returns size in KB not in bytes?

1 Answers

Have you tried org.apache.commons.io.FileUtils ?

According to: https://kodejava.org/how-do-i-create-a-human-readable-file-size/

package org.kodejava.example.commons.io;

import org.apache.commons.io.FileUtils;

import java.io.File;

public class ReadableFileSize {
    public static void main(String[] args) {
        File file = new File("/Users/kodejava/Downloads/Java/JDK/jdk-6u7-linux-i586.bin");

        long size = file.length();
        String display = FileUtils.byteCountToDisplaySize(size); //https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#byteCountToDisplaySize-long-

        System.out.println("Name    = " + file.getName());
        System.out.println("Size    = " + size);
        System.out.println("Display = " + display);
    }
}

Result:

Name    = jdk-6u7-linux-i586.bin
Size    = 78482905
Display = 74 MB
Related