So erstellen Sie schnelle und effiziente Dateistream-Schreibvorgänge für große Dateien mit geringer Dichte

Ich habe eine Anwendung, die große Dateien in mehreren Segmenten schreibt. Ich benutze FileStream.Seek, um jeden Draht zu positionieren. Wenn ich FileStream.Write an einer tiefen Position in einer Sparse-Datei aufrufe, löst der Schreibvorgang an allen vorangegangenen Bytes eine "Backfill" -Operation (Schreiben von 0en) aus, die langsam ist.

Gibt es eine effizientere Möglichkeit, mit dieser Situation umzugehen?

Der folgende Code demonstriert das Problem. Das anfängliche Schreiben dauert ungefähr 370 MS auf meinem Computer.

    public void WriteToStream()
    {
        DateTime dt;
        using (FileStream fs = File.Create("C:\\testfile.file"))
        {   
            fs.SetLength(1024 * 1024 * 100);
            fs.Seek(-1, SeekOrigin.End);
            dt = DateTime.Now;
            fs.WriteByte(255);              
        }

        Console.WriteLine(@"WRITE MS: " + DateTime.Now.Subtract(dt).TotalMilliseconds.ToString());
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage