.NET 3.x Копирование папки более 2ГБ с отображением прогресса в ProgressBar - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Необходимо реализовать копирование папки с прогрессбаром. Использую код
Листинг программы
  1. Imports System.Collections.Generic
  2. Imports System.ComponentModel
  3. Imports System.Data
  4. Imports System.Drawing
  5. Imports System.Linq
  6. Imports System.Text
  7. Imports System.Threading.Tasks
  8. Imports System.Windows.Forms
  9. Imports System.IO
  10. Partial Public Class Form1
  11. Inherits Form
  12. Private maxbytes As Integer = 0
  13. Private copied As Integer = 0
  14. Private total As Integer = 0
  15. Private otkuda As String = "c:\My downloads\"
  16. Private kuda As String = "c:\Install\" + Date.Today + "\My downloads\"
  17. Public Sub New()
  18. InitializeComponent()
  19. End Sub
  20. Public Sub Copy1(sourceDirectory As String, targetDirectory As String)
  21. Dim diSource As New DirectoryInfo(sourceDirectory)
  22. Dim diTarget As New DirectoryInfo(targetDirectory)
  23. 'Получает размер всех файлов, присутствующих в исходной папке.
  24. GetSize(diSource, diTarget)
  25. maxbytes = maxbytes \ 1024
  26. ProgressBar1.Maximum = maxbytes
  27. CopyAll(diSource, diTarget)
  28. End Sub
  29. Public Sub CopyAll(source As DirectoryInfo, target As DirectoryInfo)
  30. If Directory.Exists(target.FullName) = False Then
  31. Directory.CreateDirectory(target.FullName)
  32. End If
  33. For Each fi As FileInfo In source.GetFiles()
  34. fi.CopyTo(Path.Combine(target.ToString(), fi.Name), True)
  35. total += CInt(fi.Length)
  36. copied += CInt(fi.Length)
  37. copied /= 1024
  38. ProgressBar1.[Step] = copied
  39. ProgressBar1.PerformStep()
  40. label1.Text = (total \ 1048576).ToString() & "MB of " & (maxbytes \ 1024).ToString() & "MB copied"
  41. label1.Refresh()
  42. Next
  43. For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
  44. Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
  45. CopyAll(diSourceSubDir, nextTargetSubDir)
  46. Next
  47. End Sub
  48. Public Sub GetSize(source As DirectoryInfo, target As DirectoryInfo)
  49. If Directory.Exists(target.FullName) = False Then
  50. Directory.CreateDirectory(target.FullName)
  51. End If
  52. For Each fi As FileInfo In source.GetFiles()
  53. 'Размер файла
  54. maxbytes += CInt(fi.Length)
  55. Next
  56. For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
  57. Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
  58. GetSize(diSourceSubDir, nextTargetSubDir)
  59. Next
  60. End Sub
  61. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  62. Copy1(otkuda, kuda)
  63. MessageBox.Show("Готово")
  64. End Sub
  65. End Class
Но возникла проблема с большими папками. Помогите если не сложно.

Решение задачи: «.NET 3.x Копирование папки более 2ГБ с отображением прогресса в ProgressBar»

textual
Листинг программы
  1. (maxbytes \ 1024).ToString()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы