请查看此帖的底部,以便更新。
我有以下代码搜索目录并显示目录中的最大文件。问题是它以KB格式显示 - 我究竟如何将其转换为MB?文件大小太大,所以想要更容易阅读 - 感谢您的帮助:
Private Sub btnGetMax_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetMax.Click
ClearList()
Dim dblSize As Integer = 0
Dim dblMax As Integer = 0
Dim strMax As String = ""
Dim objFileInfo As System.IO.FileInfo
For Each strFile As String In My.Computer.FileSystem.GetFiles("c:\temp", FileIO.SearchOption.SearchAllSubDirectories)
objFileInfo = My.Computer.FileSystem.GetFileInfo(strFile)
/*whats the size of the files?*/
dblSize = objFileInfo.Length
If dblSize > dblMax Then
dblMax = dblSize
strMax = objFileInfo.FullName
End If
Next
MessageBox.Show("Largest file in .Net folder is " & vbCrLf &
strMax & vbCrLf &
dblMax.ToString("N0"))
End Sub
应该让我自己更清楚!我知道如何将KB转换为MB但不知道我如何将其纳入我的代码 - 我是否为STRMAX添加了另一个变量/1024..EXCEPT我已经有了STRMAX VARIABLE ......仍然是一个非常多的初学者GUYS。
我知道如何将KB转换为MB - 问题是如何将其合并到我的代码中?我是否添加了另一个变量
答案 0 :(得分:5)
(抱歉上一个回答是1024,错误的假设)
关于从kB转换为MB的问题,您肯定可以通过SI标准来假设:
1 MB = 1000 kB
Ergo,除以1000.
如果不相信,我建议您阅读this。
由于Microsoft Windows expresses等软件的存储量为1024字节的倍数,因此请将代码更改为:
dblMax = dblMax/(1024*1024)
MessageBox.Show("Largest file in .Net folder is " & vbCrLf &
strMax & vbCrLf &
dblMax.ToString("N0"))
(因为你正在打印dblMax&你的文件大小是以字节为单位,而不是kB)
答案 1 :(得分:3)
除以1000?
重新:我如何将其纳入我的代码 - 我是否添加另一个变量
如果需要,可以添加另一个变量,进行调试会更容易。只要给它一个新名字。你也可以进行内联划分(参见@KevinDTimm的解决方案)。
答案 2 :(得分:0)
我只想说strMax = objFileInfo.FullName & ' ' & (dblSize / 1024) & 'MB'
(抱歉语法,我还没有在> 10年内完成VB)
答案 3 :(得分:0)
Enum xByte As Long
kilo = 1024L
mega = 1024L * kilo
giga = 1024L * mega
tera = 1024L * giga
End Enum
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
For x As Integer = 2 To 4
Debug.WriteLine("")
Dim d As Double = 1024 ^ x
Debug.WriteLine(String.Format("{0} bytes ", d.ToString("n0")))
Debug.WriteLine(String.Format("{0} KB ", (d / xByte.kilo).ToString("n3")))
Debug.WriteLine(String.Format("{0} MB ", (d / xByte.mega).ToString("n3")))
Debug.WriteLine(String.Format("{0} GB ", (d / xByte.giga).ToString("n3")))
Debug.WriteLine(String.Format("{0} TB ", (d / xByte.tera).ToString("n3")))
Next
End Sub
答案 4 :(得分:0)
将它放在文档的顶部。
Dim imin As Integer 'Bytes
Dim imax As Integer 'Bytes
Dim imin1 As Integer 'Kb
Dim imax1 As Integer 'kb
然后尝试重命名一些东西以匹配你的。
Private Sub WC_DownloadProgressChanged(sender As Object, e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
Try
imin = e.BytesReceived / 1024 'Bytes converted to KB
imax = e.TotalBytesToReceive / 1024 'Bytes converted to KB
imin1 = imin / 1024 'Converts to MB
imax1 = imax / 2014 'Converts to MB
Catch ex As Exception
End Try
Try
ProgressBar1.Maximum = e.TotalBytesToReceive
ProgressBar1.Value = e.BytesReceived
Label1.Text = imin1 & "MB of " & imax1 & "MB"
Catch ex As Exception
End Try
End Sub
这会将其转换为MB,主要用于下载。
由于人们喜欢adv方式,这是简单/简单的方式;)