StreamReader und StreamWriter total langsam. Gehts schneller?



  • Hallo ich schreibe ein recht grosses Programm das mit den beiden Streams arbeitet. Dabei speichere ich Einstellungen in Dateien ab. Das Problem ist, wenn ich dann auf die Datei im Programm zugreife dann bleibt das Programm erst mal für ca. 3 Sekunden hängen und geht dann weiter, in dieser Zeit liest er die Datei ein. Das ist mir echt zu langsam. Mit dem BufferedStream sind mir die Methoden zu blöd. Da ich immer zeilenweise lese. Und bei BufferedStream oder FileStream gibts kein "ReadLine()" oder "WriteLine(), da gibts nur Read und Write über Byte Arrays.
    Oder weiss einer wie ich mit Read z.B. eine ganze Zeile einlesen kann. Ich kann nur angeben wieviel Zeichen er einlesen soll, aber ich woher weiss ich wieviele Zeichen eine bestimmte Zeile hat, oder kennt einer einen besseren Weg, oder sogar eine bessere Klasse. 🙂

    Danke



  • BufferedStreams und in einem eigenem Thread laufen lassen. Egal ob du es blöd findest oder nicht. :p



  • Optimizer schrieb:

    BufferedStreams und in einem eigenem Thread laufen lassen. Egal ob du es blöd findest oder nicht. :p

    Ja aber ich muss zeilenweise lesen. BufferedStream bietet nur Read oder ReadBytes an. Es gibt keine Methoden die mir einfach eine Zeile aus der Datei als String liefert, so wie es StreamReader macht. :-)Weisst was ich meine?
    Weisst du vielleicht wie ich zeilenweise realisieren könnte?

    danke dir



  • Ja gut, wenn dich nur die Pausen stören und nicht die Langsamkeit an sich, dann lass doch einfach nur deinen normalen Reader in einem eigenen Thread laufen.



  • Hi,

    Ja aber ich muss zeilenweise lesen. BufferedStream bietet nur Read oder ReadBytes an. Es gibt keine Methoden die mir einfach eine Zeile aus der Datei als String liefert, so wie es StreamReader macht. :-)Weisst was ich

    wer sagt, dass man ein StreamReader nciht an ein BufferedStream anbinden kann 🙂

    public static void BufferedStream()
    		 {
    			 FileStream f=new FileStream("C:\\test.txt",FileMode.Open);
    			 BufferedStream b=new BufferedStream(f);
    			 StreamReader reader= new StreamReader(b,1000);
    			 System.Collections.Specialized.StringCollection testarray=new                                             System.Collections.Specialized.StringCollection();
    			 do
    			 {
    				 string temp=reader.ReadLine();
    				 if(temp==null)break;
    				 testarray.Add(temp);
    			 }
    			 while(true);
    			 f.Close();
    
    		 }
    

Anmelden zum Antworten