Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
uzlprog
14 / 14 / 1
Регистрация: 23.04.2012
Сообщений: 541
#1

Как подсчитать размер файла в байтах, килобайтах, мегабайтах и т.п - Visual Basic .NET

18.05.2013, 16:21. Просмотров 2177. Ответов 18
Метки нет (Все метки)

Итак, в форме программы должен выводится размер файла в зависимости от которого, показатель будет измеряться в b, Kb, Mb, Gb. Возникли некоторые сложности в подсчете, ведь функция IO.FileInfo.Length выводит размер в байтах.

Возникла мысль сделать через If:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
           If FI.Length < 1024 Then
                LabelMb.Text = Math.Round(FI.Length, 1) & " b"
            End If
            If 1073741824 > FI.Length > 1024 Then
                LabelMb.Text = Math.Round((FI.Length / 1024), 1) & " Kb"
            End If
            If 1099511627776 > FI.Length > 1073741824 Then
                LabelMb.Text = Math.Round((FI.Length / 1073741824), 2) & " Mb"
            End If
            If FI.Length > 1099511627776 Then
                LabelMb.Text = Math.Round((FI.Length / (1.1 * 10 ^ 12)), 2) & " Gb"
            End If
Но не покатило(
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 16:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как подсчитать размер файла в байтах, килобайтах, мегабайтах и т.п (Visual Basic .NET):

Как узнать размер в байтах графических объектов - Visual Basic .NET
Здравствуйте. Как программно узнать размер в байтах графических объектов - графических путей, кистей и т.д.?

.NET 4.x Определить размер папки на компьютере в байтах - Visual Basic .NET
Как можно проще всего програмно, например при нажатии на кноку определить размер папки ?

Как узнать размер файла - Visual Basic .NET
Как узнать размер файла в GB и MB? Добавлено через 2 часа 15 минут Понятно, всем спасибо что помогли но я нашел Dim f as new...

Измерьте объем следующего информационного сообщения в битах, байтах, килобайтах и мегабайтах - Информатика
1 )Измерьте объем следующего информационного сообщения в битах, байтах, килобайтах и мегабайтах:… И больше всех лишь ты, Кавказ, звенел...

Вводится с клавиатуры размер файла байтах,определить и вывести на экран значение в килобайтах? - Pascal ABC
Вводится с клавиатуры размер файла байтах,определить и вывести на экран значение в килобайтах?

Вычислить суммарный размер файлов в килобайтах и средний размер файла - Turbo Pascal
Нужно составить программу с помощью которой с клавиатуры вводятся размер 6 файлов в байтах(от 100 до 2000) и вычисляет суммарный размер...

18
Petr_S
196 / 197 / 88
Регистрация: 21.04.2013
Сообщений: 380
08.09.2016, 16:00 #16
Rius, интересно конечно, но не будет ли лишних расчетов?
А именно - расчет значений для всех CLng(Math.Pow(2, 10 * i) с последующей выборкой того, что меньше size, с последующим же выбором последнего значения Last.

Небольшие изменения:
vb.net
1
2
3
4
5
6
7
    Function GetFileLength(ByVal FileSizeInBytes As Long) As String
        Dim unit() As String = {"", "K", "M", "G", "T", "P", "E"}
        Dim p As Integer = Math.Min(CInt(Math.Truncate(Math.Log(FileSizeInBytes, 1024))), unit.Length - 1)
        Return String.Format("{0}{1}", _
                             Math.Round(FileSizeInBytes / Math.Pow(1024, p), 2, MidpointRounding.AwayFromZero), _
                             unit(p) & "B")
    End Function
0
Rius
Эксперт .NET
4051 / 2719 / 633
Регистрация: 25.05.2015
Сообщений: 8,513
Записей в блоге: 10
Завершенные тесты: 4
08.09.2016, 16:17 #17
Именно расчётов степени - только +1 элемент после искомой, потому что TakeWhile().
Вот если бы просто Last() с условием, тогда бы весь ряд рассчитывался.
0
Petr_S
196 / 197 / 88
Регистрация: 21.04.2013
Сообщений: 380
08.09.2016, 18:38 #18
Rius, погонял Ваш вариант еще:
1) При вызове функции со значениями аргумента 0 или 1. Процедура вываливается с руганью "Последовательность не содержит элементов".
2) Решил посмотреть, что за последовательность, из которой берется Last, получается. Конкретно ее длина.
- по килобайт: 1 (одно вычисление);
- от 1025 по мегабайт: 2 (два вычисления);
- от (1024*1024 + 1) по гигабайт: 3 (три вычисления);
и т.д.
Т.е. чем больше значение аргумента функции, тем больше вычислений происходит. Для тера это, например, 5 вычислений. Хотя, не могу не исключить, что считаются также значения и для пета и для экса. Просто они не берутся в последовательность.

Апдейт моей процедуры:
vb.net
1
2
3
4
5
6
7
8
9
    Function GetFileLength(ByVal FileSizeInBytes As Long) As String
        Dim unit() As String = {"", "K", "M", "G", "T", "P", "E"}
        Dim p As Integer = If(FileSizeInBytes > 0, _
                              Math.Min(CInt(Math.Truncate(Math.Log(FileSizeInBytes, 1024))), unit.Length - 1), _
                              0)
        Return String.Format("{0}{1}B", _
                             Math.Round(FileSizeInBytes / Math.Pow(1024, p), 2, MidpointRounding.AwayFromZero), _
                             unit(p))
    End Function
0
Rius
Эксперт .NET
4051 / 2719 / 633
Регистрация: 25.05.2015
Сообщений: 8,513
Записей в блоге: 10
Завершенные тесты: 4
08.09.2016, 18:51 #19
Цитата Сообщение от Petr_S Посмотреть сообщение
Т.е. чем больше значение аргумента функции, тем больше вычислений происходит.
Верно.
Об оптимизации всё равно надо думать только по результатам.
И красиво написанный метод наверняка будет тормознее быстрого метода.
0
08.09.2016, 18:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2016, 18:51
Привет! Вот еще темы с ответами:

GD как узнать размер файла, в байтах, на выходе? - PHP
Всем привет! Простенький пример: Делаем привьюшку. $src = 'file.jpg'; $src = imagecreatefromjpeg($src); $new =...

Подсчитать размер файлов F1 и F2 (в байтах) - C++
Постановка задачи: Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Выполнить задание. При разработке...

Известен объем информации в байтах.Выразить его в мегабайтах и гигабайтах - Visual Basic
Рабочее окно приложения должно содержать условие задачи, а ввод - вывод сопровождаться комментариями. Для вывода полученных результатов...

пишу плеер(фонон) хочу чтобы выводил размер воспроизв. файла(в мегабайтах или др) - C++ Qt
void MainWindow::openFile() { QFileDialog dialog(this); dialog.setAcceptMode(QFileDialog::AcceptOpen); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru