Je voulais récemment suivre les progrès d'un HTTPWebRequest
télécharger des progrès. J'ai donc commencé petit et commencé avec la lecture tamponnée d'un simple fichier texte. J'ai découvert alors qu'une tâche simple commeLire (/ écrire) des fichiers en C#
File.ReadAllText("text.txt");
devient quelque chose comme ci-dessous, tous les cours d'eau, lecteurs, écrivains, etc. Ou peut somethings être retiré? Aussi le code ci-dessous ne fonctionne pas. Peut-être que j'ai fait quelque chose de mal, quel est le moyen de lire (je suppose que l'écriture sera similaire) dans le tampon afin que je puisse suivre les progrès, en supposant que le flux ne sont pas locaux, par exemple. 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();
Mise à jour: Solution
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();
"Aussi le code ci-dessous ne fonctionne pas." - Que diriez-vous de vous aider et d'expliquer ce qui ne fonctionne pas comme prévu ...? –
@Mitch Wheat, oh j'ai oublié d'ajouter l'erreur, j'ai mis à jour le poste. Je reçois l'erreur sur la ligne 'while' –