Ich wollte vor kurzem den Fortschritt eines HTTPWebRequest
Upload-Fortschritts verfolgen. Also fing ich klein an und begann mit dem gepufferten Lesen einer einfachen Textdatei. Ich entdeckte dann, dass eine einfache Aufgabe wieLesen (Schreiben) von Dateien in C#
File.ReadAllText("text.txt");
so etwas wie unten wird, mit allen Strömen, Leser, Autoren etc. Oder kann Somethings entfernt werden? Auch der folgende Code funktioniert nicht. Vielleicht habe ich etwas falsch gemacht, was ist der Weg zu lesen (ich denke, schreiben wird ähnlich sein) in Puffer, so dass ich den Fortschritt verfolgen kann, unter der Annahme, dass der Strom nicht lokal sind z. WebRequest
byte[] buffer = new byte[2560]; // 20KB Buffer, btw, how should I decide the buffer size?
int bytesRead = 0, read = 0;
FileStream inStream = new FileStream("./text.txt", FileMode.Open, FileAccess.Read);
MemoryStream outStream = new MemoryStream();
BinaryWriter outWriter = new BinaryWriter(outStream);
// I am getting "Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection."
// inStream.Length = Length = 9335092
// bytesRead = 2560
// buffer.Length = 2560
while ((read = inStream.Read(buffer, bytesRead, buffer.Length)) > 0)
{
outWriter.Write(buffer);
//outStream.Write(buffer, bytesRead, buffer.Length);
bytesRead += read;
Debug.WriteLine("Progress: " + bytesRead/inStream.Length * 100 + "%");
}
outWriter.Flush();
txtLog.Text = outStream.ToString();
Update: Lösung
byte[] buffer = new byte[2560];
int bytesRead = 0, read = 0;
FileStream inStream = File.OpenRead("text.txt");
MemoryStream outStream = new MemoryStream();
while ((read = inStream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, buffer.Length);
bytesRead += read;
Debug.WriteLine((double)bytesRead/inStream.Length * 100);
}
inStream.Close();
outStream.Close();
"Auch der folgende Code funktioniert nicht." - Wie wäre es, sich selbst zu helfen und zu erklären, was nicht wie erwartet funktioniert ...? –
@Mitch Wheat, oh ich habe vergessen, den Fehler hinzuzufügen, habe ich den Beitrag aktualisiert. Ich bekomme den Fehler auf der 'while' Zeile –