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ückkehr

Edit 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();
    }
}
War es hilfreich?

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 Ausgabe
Console.Write(new Char(b).toString());

while (Toread <0) sollte während (Toread> 0) (größer als)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top