File Input Output Java

//package freenet.support;
/**
 * Size formatting utility.
 */
public class SizeUtil {
  public final static String[] suffixes = { "B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB" };
  public static String formatSize(long sz) {
    return formatSize(sz, false);
  }
  public static String formatSizeWithoutSpace(long sz) {
    String[] result = _formatSize(sz);
    return result[0].concat(result[1]);
  }
  
  public static String formatSize(long sz, boolean useNonBreakingSpace) {
    String[] result = _formatSize(sz);
    return result[0].concat((useNonBreakingSpace ? "\u00a0" : " ")).concat(result[1]);
  }
  
  public static String[] _formatSize(long sz) {
    long s = 1;
    int i;
    for(i=0;i      s *= 1024;
      if(s > sz) {
        break;
        // Smaller than multiplier [i] - use the previous one
      }
    }
    
    s /= 1024; // we use the previous unit
    if (s == 1)  // Bytes? Then we don't need real numbers with a comma
    {
      return new String[] { String.valueOf(sz), SizeUtil.suffixes[0] };
    }
    else
    {
      double mantissa = (double)sz / (double)s;
      String o = String.valueOf(mantissa);
      if(o.indexOf('.') == 3)
        o = o.substring(0, 3);
      else if((o.indexOf('.') > -1) && (o.indexOf('E') == -1) && (o.length() > 4))
        o = o.substring(0, 4);
      if(i < SizeUtil.suffixes.length) // handle the case where the mantissa is Infinity
        return new String[] { o , SizeUtil.suffixes[i] };
      return new String[] { o , "" };
    }
  }
}