fileSizeReadable static method

String fileSizeReadable(
  1. String pathFile, {
  2. int round = 2,
})

Get readable file size https://github.com/synw/filesize

Implementation

static String fileSizeReadable(
  String pathFile, {
  int round = 2,
}) {
  const divider = 1024;
  try {
    if (!io.File(pathFile).existsSync()) {
      throw 'File not Exists !!!';
    }
    final _file = io.File(pathFile);

    final _size = _file.lengthSync();

    if (_size < divider) {
      return '$_size B';
    }

    if (_size < (divider * divider) && _size % divider == 0) {
      return '${(_size / divider).toStringAsFixed(0)} KB';
    }

    if (_size < (divider * divider)) {
      return '${(_size / divider).toStringAsFixed(round)} KB';
    }

    if (_size < divider * divider * divider && _size % divider == 0) {
      return '${(_size / (divider * divider)).toStringAsFixed(0)} MB';
    }

    if (_size < divider * divider * divider) {
      return '${(_size / divider / divider).toStringAsFixed(round)} MB';
    }

    if (_size < divider * divider * divider * divider &&
        _size % divider == 0) {
      return '${(_size / (divider * divider * divider)).toStringAsFixed(0)} GB';
    }

    if (_size < divider * divider * divider * divider) {
      return '${(_size / divider / divider / divider).toStringAsFixed(round)} GB';
    }

    if (_size < divider * divider * divider * divider * divider &&
        _size % divider == 0) {
      final num r = _size / divider / divider / divider / divider;
      return '${r.toStringAsFixed(0)} TB';
    }

    if (_size < divider * divider * divider * divider * divider) {
      final num r = _size / divider / divider / divider / divider;
      return '${r.toStringAsFixed(round)} TB';
    }

    if (_size < divider * divider * divider * divider * divider * divider &&
        _size % divider == 0) {
      final num r = _size / divider / divider / divider / divider / divider;
      return '${r.toStringAsFixed(0)} PB';
    } else {
      final num r = _size / divider / divider / divider / divider / divider;
      return '${r.toStringAsFixed(round)} PB';
    }
  } catch (e) {
    throw Exception(e);
  }
}