加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net 文件夹实现移动 并显示进度条,richtextbox1显示移动的文

发布时间:2020-12-16 22:59:29 所属栏目:大数据 来源:网络整理
导读:利用线程,和计时器,Function GetFolderSize从网上借鉴的,IO类只支持不同分区移动,所以移动目录只能在相同分区,设计界面如图, 如: d:/a d:/b(空目录) 代码如下 Imports System.IO Imports System.Threading Public Class Form2 Dim SourceDir,DestDir

利用线程,和计时器,Function GetFolderSize从网上借鉴的,IO类只支持不同分区移动,所以移动目录只能在相同分区,设计界面如图,

如: d:/a d:/b(空目录)

代码如下

Imports System.IO
Imports System.Threading

Public Class Form2
Dim SourceDir,DestDir As String
Dim SourceLen As Integer

'返回文件夹大小
Private Function GetFolderSize(ByVal DirPath As String,Optional ByVal IncludeSubFolders As Boolean = True) As Long
Dim lngDirSize As Long
Dim objFileInfo As FileInfo
Dim objDir As DirectoryInfo = New DirectoryInfo(DirPath)
Dim objSubFolder As DirectoryInfo
Try
For Each objFileInfo In objDir.GetFiles()
lngDirSize += objFileInfo.Length
Next
If IncludeSubFolders Then
For Each objSubFolder In objDir.GetDirectories()
lngDirSize += GetFolderSize(objSubFolder.FullName)
Next
End If
Catch
End Try
Return lngDirSize
End Function

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim T As New Thread(AddressOf DirMove)

CheckForIllegalCrossThreadCalls = False

SourceDir = TextBox1.Text
DestDir = TextBox2.Text

SourceLen = GetFolderSize(SourceDir)

ProgressBar1.Value = 0
Timer1.Interval = 100
Timer1.Start()
T.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Timer1.Tick
If Directory.Exists(DestDir) = False Then Exit Sub
If SourceLen <> 0 Then
ProgressBar1.Value = Math.Round(GetFolderSize(DestDir) / SourceLen,2) * 100
End If

End Sub

Private Sub DirMove()
Me.Text = "正在移动..."
Directory.Move(SourceDir,DestDir)
Me.Text = "移动完成!"
ProgressBar1.Value = 100
RichTextBox1.Text += DestDir & Environment.NewLine
End Sub

Private Sub DirCopy()
My.Computer.FileSystem.CopyDirectory(SourceDir,DestDir,True,FileIO.UICancelOption.DoNothing)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
Dim T As New Thread(AddressOf DirCopy)

CheckForIllegalCrossThreadCalls = False

SourceDir = TextBox1.Text
DestDir = TextBox2.Text

SourceLen = GetFolderSize(SourceDir)

ProgressBar1.Value = 0
Timer1.Interval = 100
Timer1.Start()
T.Start()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button3.Click
Dim a As New ArrayList
a.Add(".MP3")
Dim b As New ArrayList
Dim c As New Hashtable

clsUtil.findDirectory("D:/a",a,b,c)
End Sub
End Class

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读