C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ファイルを高速でコピーする方法

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■95168 / inTopicNo.1)  ファイルを高速でコピーする方法
  
□投稿者/ こう (1回)-(2020/06/26(Fri) 19:50:36)

分類:[.NET 全般] 

ファイルをコピーしながら、バイナリデータを変更したいのですが、
以下のように単純にコピーするプログラムを作ってみたのですが、
エクスプローラーでコピーするよりも2倍くらい時間がかかります。

もっと、高速でバイナリコピーできる方法があれば教えてください。



            Using streamIn As IO.Stream = New FileStream(filepath, FileMode.Open)


                Using streamOut As IO.Stream = New FileStream(Get_BasePath(filepath) & "_2." & Get_Extension(filepath(i)), FileMode.Create)


                    Using Reader As New BinaryReader(streamIn)

                        Using writer As New BinaryWriter(streamOut)


                            For j = 1 To FileSize

                                Dim Data1 As Byte = Reader.ReadByte

                                writer.Write(Data1)

                            Next j



                        End Using

                    End Using


                End Using


            End Using

引用返信 編集キー/
■95169 / inTopicNo.2)  Re[1]: ファイルを高速でコピーする方法
□投稿者/ Hongliang (1053回)-(2020/06/26(Fri) 20:12:07)
「バイナリデータを変更」というのがどういう処理なのかにもよりますが、
基本は「一気に読む」「一気に書く」です。
またバイト単位で扱うならBinaryReaderは必要ありません。

Dim buffer(65535) As Byte ' サイズは適当に調整する
Dim readSize As Integer
Do
    readSize = streamIn.Read(buffer, 0, buffer.Length)
    If readSize = 0 Then
        Break
    End If
    ' 必要に応じてここでbufferの中身を改変
    streamOut.Write(buffer, 0, readSize)
Loop

引用返信 編集キー/
■95170 / inTopicNo.3)  Re[2]: ファイルを高速でコピーする方法
□投稿者/ こう (3回)-(2020/06/27(Sat) 10:49:40)
それもそうですね
どうもありがとうございます。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ