私はC#の初心者ですが、大きなtxtファイルの読み取り/書き込みについていくつかの調査を行いました。最大は8GBかもしれませんが、大きすぎる場合は1GBに分割することを検討します。最大 30MBytes/s の速度が必要です。シーケンシャル操作の FileStream または StreamReader/StreamWriter、ランダム アクセスの MemoryMappedFiles の 3 つのアプローチを見つけました。今、私は最初にファイルを読みたいと思います。動作するコードの例を次に示します。
FileStream fileStream = new FileStream(@"C:\Users\Guest4\Desktop\data.txt", FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[length]; // create buffer
int count; // actual number of bytes read
sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
}
finally
{
fileStream.Close();
}
大きなファイルを高速で読み取るのは良い方法だと思いますか?
読んだ後、そのファイルを再送信する必要があります。16384 バイトのチャンクである必要があります。すべてのデータが送信されるまで、すべてのチャンクが送信されます。そして、そのチャンクは文字列型でなければなりません。どうすればよいか教えていただけますか?分割して文字列に変換します。最善の方法は、すべてのファイルを読み取った後ではなく、少なくともその 16384 バイトが読み取られた場合に、その文字列チャンクを送信することだと思います。