Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

C# Compiler kann Zeichen in Datei nicht lesen?

Muß eine using-Klausel rein, mit der ein anderer, umfassenderer Zeichensatz zum Lesen vereinbart wird, als der standardmäßig eingestellte?

Welche using-Klausel wäre das, und wie würde dieser Zeichensatz vereinbart werden müssen?

Update:

Es soll eine Video-Datei gelesen werden. Etwa 99% der Zeichen kann der C#-Compiler nicht lesen.

Update 2:

Hallo Thomas, erst mal danke für deine Antwort.

Habe folgendes versucht:

StreamWriter writer = new StreamWriter(...

StreamReader reader = new StreamReader(.

und dann in einer Schleife:

{

char geles=Convert.ToChar(reader.Read());

writer.Write(geles);

}

reader.Read liest ein einzelnes Zeichen im Datenstrom und gibt einen Integer-Wert zurück, der anschließend mit Convert.ToChar wieder in ein Zeichen umgewandelt wird.

Habe mit Haltepunkten die gelesenen Werte überprüft und die Zeichen der Video-Datei (mit Dateimanager angesehen) werden falsch gelesen.

1 Antwort

Bewertung
  • vor 1 Jahrzehnt
    Beste Antwort

    Die Frage ist leider recht mißverständlich formuliert. Was soll passieren? Soll ein C# Programm geschrieben werden, dass eine Binär (=Video) Datei einliest?

    Wenn ja: Es ist so, dass - um ein Video zu laden - sicher der Zeichensatz nicht das Problem ist. Das Problem wird viel eher sein, dass eine Binärdatei vermutlich als Textdatei geladen wurde. Das kann nicht funktionieren.

    Richtig z.B. wäre sowas:

    public static void ReadWholeArray (Stream stream, byte[] data)

    {

    int offset=0;

    int remaining = data.Length;

    while (remaining > 0)

    {

    int read = stream.Read(data, offset, remaining);

    if (read <= 0)

    throw new EndOfStreamException

    (String.Format("End of stream reached with {0} bytes left to read", remaining));

    remaining -= read;

    offset += read;

    }

    }

Haben Sie noch Fragen? Jetzt beantworten lassen.