Java, как показать удобный форматированный вывод относительно скорости полосы пропускания во время загрузки - PullRequest
0 голосов
/ 16 ноября 2011

Хотите показать красиво отформатированный вывод относительно скорости полосы пропускания во время загрузки

У меня есть этот расчет ниже благодаря @Tomasz Nurkiewicz, и он показывает
мега * байт * в секунду, когдаЯ загружаю файл.

long start = System.nanoTime();
long totalRead = 0;
final double NANOS_PER_SECOND = 1000000000.0;
final double BYTES_PER_MIB = 1024 * 1024;

    while ((val = bis.read(buffer, 0, 1024)) > 0) {
        //...
        totalRead += val;
        double speed = NANOS_PER_SECOND / BYTES_PER_MIB * totalRead / (System.nanoTime() - start + 1)
    }

Хотелось бы, чтобы это было так.Я получаю мега * байт * в секунду из расчета, и после этого я ввожу if statement, чтобы выбрать КБайт / с, МБит / с (не уверен) или точно так же, как скорость показа обычного FTP-клиента.

if( KByte/s something) {
   System.out.print(your current speed xx KB/s);
}else if(MByte/s something){
   System.out.print(your current speed xx MB/s);
}

Моя проблема в том, что мне поставить в операторе if ?.

надеюсь, вы понимаете, что я пытаюсь сделать

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

В есть метод FileUtils.byteCountToDisplaySize() * Apache Commons IO :

System.out.println(
  "your current speed is " + FileUtils.byteCountToDisplaySize(12345) + "/s"
)

// your current speed is 12 KB/s

Также см. (Возможные дубликаты):

1 голос
/ 16 ноября 2011

Я действительно не совсем понимаю, что вы хотите, это сбивает с толку, что у вас есть мега ** байтов в секунду в вашем коммутаторе.

Как вы, похоже, знаете, в операторе switch должно быть перечисление или int - и ваш текущий номер не равен ни.

Если вы хотите автоматически переходить с Кбит / с на Мбит / с по мере увеличения числа, я думаю, вы хотите использовать оператор if с пороговым значением.

Если вы хотите использовать параметр, который пользователь устанавливает в качестве предпочтения, вам просто нужно передать этот параметр (или enum, или int) в эту функцию, чтобы он мог обработать ответ в требуемом формате.

Если вы не хотите делать ничего из этого, тогда я нахожу ваш вопрос немного запутанным.

...