1 つのファイルの最後に多数のファイルを追加するアプリケーションを作成しています...ファイル全体をメモリにロードすることを避けるために、バッファを指定して filestream クラスを使用していますが、進行状況を表示したいと考えています。コピーされる個々のファイルと現在のファイルの名前...これは簡単ですが、各ファイルが非常に小さい場合、foreachループシーム内で実行するとパフォーマンスが大幅に低下します。
コードは次のとおりです。
Public Function StreamAppendFileToFile(ByVal f1 As String, ByVal f2 As String)
Dim bytesRead As Integer
Dim nn As New FileInfo(f1)
CurrentFsize = nn.Length
Dim buffer(40096) As Byte
Using inFile As New System.IO.FileStream(f1, IO.FileMode.Open, IO.FileAccess.Read)
Using outFile As New System.IO.FileStream(f2, IO.FileMode.Append, IO.FileAccess.Write)
Do
bytesRead = inFile.Read(buffer, 0, 40096)
outFile.Write(buffer, 0, bytesRead)
Application.DoEvents()
Loop While bytesRead > 0
End Using
End Using
End Function
このようなものを入れると、実行時間が2倍になります:
Public Function StreamAppendFileToFile(ByVal f1 As String, ByVal f2 As String)
Dim bytesRead As Integer
Dim nn As New FileInfo(f1)
CurrentFsize = nn.Length
Dim buffer(40096) As Byte
Using inFile As New System.IO.FileStream(f1, IO.FileMode.Open, IO.FileAccess.Read)
Using outFile As New System.IO.FileStream(f2, IO.FileMode.Append, IO.FileAccess.Write)
Do
bytesRead = inFile.Read(buffer, 0, 40096)
**Progressbar1.value = Math.Round((bytesRead / CurrentFsize) * 100)**
**Application.Doevents()**
outFile.Write(buffer, 0, bytesRead)
Application.DoEvents()
Loop While bytesRead > 0
End Using
End Using
End Function
あるファイルを別のファイルにストリーム追加し、進行状況を表示するという点で、これを行うためのより良い/より高速/より効率的な方法はありますか? ありがとう..