Warum nur diese Filestream Nullen zurückkehren?
-
05-07-2019 - |
Frage
Ich habe eine Datei (test.txt) bekam die "1234567" enthält. Allerdings, wenn ich versuche, es auf C # FileStream.Read zu lesen, bekomme ich nur die Ziffern 0 (sieben Nullen in diesem Fall). Könnte mir jemand sagen, warum? Ich bin wirklich hier verloren.
Bearbeiten: Problem gelöst, falscher Vergleich Operator. Doch jetzt ist es „49505152535455“
RückkehrEdit 2: Fertig. Für die Aufzeichnung musste ich zur Ausgabe des Byte Variable als char .
using System;
using System.IO;
class Program
{
static void Main()
{
FileStream fil = null;
try
{
fil = new FileStream("test.txt", FileMode.Open,FileAccess.Read);
byte[] bytes = new byte[fil.Length];
int toRead = (int)fil.Length;
int Read = 0;
while (toRead < 0)
{
int n = fil.Read(bytes, Read, toRead);
Read += n;
toRead -= n;
}
//Tried this, will only return 0000000
foreach (byte b in bytes)
{
Console.Write(b.ToString());
}
}
catch (Exception exc)
{
Console.WriteLine("Oops! {0}", exc.Message);
}
finally
{
fil.Close();
}
Console.ReadLine();
}
}
Lösung
Diese Zeile
while (toRead < 0)
stellt sicher, dass Sie nie wirklich gelesen. Toread wird> = 0 vor der Schleife.
Danach Dump Sie den Byte-Array, das nie gefüllt war.
Andere Tipps
foreach (byte b in bytes)
{
Console.Write(b.ToString());
}
Dieser Code ist falsch. Es druckt den String-Wert des Wertes des Byte. 49, dh für das ASCII-Zeichen '0', 50 für '1', etc.
Sie müssen es als
zur AusgabeConsole.Write(new Char(b).toString());
while (Toread <0) sollte während (Toread> 0) (größer als)