現在、私は vb.net でプロジェクトを行っており、あるフォルダーから別のフォルダーにファイルをコピーするときに進行状況バーを設定したいと考えています。また、進行状況バーは、コピーされたファイルの量に応じて完了に向かって移動する必要があります。
質問する
17559 次
2 に答える
3
それほど新しい質問ではありませんが、それでも答えはここにあります。次のコードは、個々のファイルの進行状況を追跡する目的の結果を達成します。1 MiB バッファを使用します。システムのリソースに応じて、それに応じてバッファを調整して、転送のパフォーマンスを微調整できます。
概念:ファイル ストリームを使用して、読み取り/書き込み時に各バイトをカウントし、ソース ファイルの合計サイズに基づいて進行状況を報告します。
'Create the file stream for the source file
Dim streamRead as New System.IO.FileStream([sourceFile], System.IO.FileMode.Open)
'Create the file stream for the destination file
Dim streamWrite as New System.IO.FileStream([targetFile], System.IO.FileMode.Create)
'Determine the size in bytes of the source file (-1 as our position starts at 0)
Dim lngLen as Long = streamRead.Length - 1
Dim byteBuffer(1048576) as Byte 'our stream buffer
Dim intBytesRead as Integer 'number of bytes read
While streamRead.Position < lngLen 'keep streaming until EOF
'Read from the Source
intBytesRead = (streamRead.Read(byteBuffer, 0, 1048576))
'Write to the Target
streamWrite.Write(byteBuffer, 0, intBytesRead)
'Display the progress
ProgressBar1.Value = CInt(streamRead.Position / lngLen * 100)
Application.DoEvents() 'do it
End While
'Clean up
streamWrite.Flush()
streamWrite.Close()
streamRead.Close()
于 2016-01-22T04:50:51.680 に答える
2
使用される概念: で を取得しcount of files
、source directory
次にからをインクリメントして、copying
転送された数を追跡します。次の式を使用して、転送されたパーセンテージを計算します。file
source folder
destination folder
variable
files
files
% of files transferred = How many files Transferred * 100 / Total No of files in source folder
を取得した後、それ% of files transferred
を使用して進行状況バーの値を更新します。
このコードを試してください:Tested with IDE
Dim xNewLocataion = "E:\Test1"
Dim xFilesCount = Directory.GetFiles("E:\Test").Length
Dim xFilesTransferred As Integer = 0
For Each xFiles In Directory.GetFiles("E:\Test")
File.Copy(xFiles, xNewLocataion & "\" & Path.GetFileName(xFiles), True)
xFilesTransferred += 1
ProgressBar1.Value = xFilesTransferred * 100 / xFilesCount
ProgressBar1.Update()
Next
于 2013-03-28T07:10:05.607 に答える