Laden...

Ein kurzes Programm mit FileStream dauert sehr lange bis es terminiert

Erstellt von userid24833 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.584 Views
userid24833 Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren
Ein kurzes Programm mit FileStream dauert sehr lange bis es terminiert

Ich habe hier mal ein Programm geschrieben, das dem geneigten Forentheilnehmer etwas trivial erscheynen mag, das zu begreifen mir bislang jedoh nicht vergoennet war.

Will heißen: Ich will mit FileStream eine Datei einlesen und simultan in der Konsole ausgeben, wenn diese eingelesen ist, will ich den FileStream schließen, und dann eine Meldung in die Konsole schreiben: „Press any key to continue“. Wenn dann gedrückt wird, dann soll das Konsolenfenster verschwinden. Dies passiert auch, aber es dauert sehr sehr sehr lange bis „er“ soweit ist. Meine Frage ict also – wieso dauert denn das so lange? Die eingelesene Datei war ein docx-Dokument von iner halben DIN A 4 – Seite, also nicht viel.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace FileCopy
{
    class Program
    {


        public static void Main()
        {
String path = @"C:\Users\soHeisseIch\Desktop\textfile.docx";
                   
                    try
                    {
                        
                        using (FileStream fs = File.Open(path, FileMode.Open))
                        {
                            byte[] b = new byte[1024];
                            UTF8Encoding temp = new UTF8Encoding(true);

                            while (fs.Read(b, 0, b.Length) > 0)
                            {
                                Console.WriteLine(temp.GetString(b));
                            }
                            fs.Close(); 
                        }
                        
                    }
                    catch (Exception ee) { Console.WriteLine(ee.Message); }


            Console.WriteLine("Press any key to continue"); 
            Console.ReadKey();
        }
    }
 }

16.842 Beiträge seit 2008
vor 9 Jahren

Das Close kannst Dir sparen, da using() das bereits über Dispose() ausführt.
Nimm mal die Stopwatch-Klasse zur Hilfe und schau, was genau so lange braucht.

Dir ist aber schon bewusst, dass *.docx im Prinzip ein ZIP-File ist, in dem nachher das wirkliche Word-Dokument liegt?

userid24833 Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren

Es ist eigenartig, nichts dauerte bei der Sache länger als 8ms, egal wo ich Stopwatch gestartet habe; es scheint fast so als sei im Hintergrund irgend etwas noch nicht beit.

16.842 Beiträge seit 2008
vor 9 Jahren

Hast es auch im Release Modus getestet, oder nur im Debug-Modus?

userid24833 Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren

Scheint in beiden Modi gleich lange zu dauern, ich habe "build solution" gemacht, ich bin in den Ordner "build" und habe die Echse laufen lassen, hat genauso lange gedauert :\

211 Beiträge seit 2008
vor 9 Jahren

Kommentier mal die Consolenausgabe (Alsu nur die Zeile Console.WriteLine(..)) aus - die frisst einen erheblichen Anteil der Zeit auf!

Kontakt & Blog: www.giesswein-apps.at

userid24833 Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren

Stimmt! Ha! Daran hat es also gelegen. Danke!