Streamreader-Frage : Buffer-Size möglicherweise zu klein?



  • Hallo Leute, beschäftige mich gerade ein wenig mit Streamreader und habe folgendes Problem, wenn ich mein Projekt kompiliere klappt alles wunderbar, aber sobald ich eine Test-Datei öffnen will kommt nach dem DateiÖffnen-Dialog eine Fehlermeldung :

    Eine nicht behandelte Ausnahme des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Der Prozess kann nicht auf die Datei "C:\Dokumente und Einstellungen\<Benutzer>\Desktop\testlog.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

    Die Datei ist 6,11 Kb groß, spielt das bei Streamreader eine wichtige Rolle? Ich dachte mir das nur da ich folgendes im Visual Studio Fenster zu sehen bekam ( rot markiert ) :

    http://www.imagebanana.com/img/qvjwmyn7/Unbenannt.JPG

    Habe mich dementsprechend mal bei MSDN umgesehen und den code folgendermaßen abgeändert an der stelle sr :

    // alt : StreamReader^ sr = gcnew StreamReader(open->FileName);
    StreamReader^ sr = gcnew StreamReader(open->FileName,System::Text::Encoding::ASCII,false,8192);
    

    hat mir aber nichts genutzt, habt ihr vielleicht tipps worans liegen könnte? bedanke mich schonmal im voraus, hier noch der code :

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    
    				 OpenFileDialog^ open = gcnew OpenFileDialog();
    
    				 open->Filter = "Textdatei *.txt | *.txt*";
    				 open->ShowDialog();
    
    				 if(open->FileName=="")
    				 {
    					 System::Windows::Forms::MessageBox::Show(L"Kein Dateiname angegeben!!");
    				 }
    				 else
    				 {
    					 StreamReader^ sr = gcnew StreamReader(open->FileName);
    					 StreamWriter^ sw = gcnew StreamWriter(open->FileName);
    					 while (!sr->EndOfStream)
    					 {
    						 String^ vergleich = sr->ReadLine();
    						 vergleich = vergleich->Replace("9,00","8,00");
    						 sw->WriteLine(vergleich);
    					 }
    
    					 sr->Close();
    					 sw->Close();
    
    				 }
    

    Habe gerade noch die Dateigröße einwenig geändert, 251 Bytes beträgt es nur noch, aber glaube langsam nicht mehr das es daran liegt?



  • Du kannst nicht Zeitgleich aus der gleichen Datei Lesen und Schreiben (Zumindest nicht so wie du das machen möchteste). Das muss schief gehen. Entweder ließt du erst alles ein, leerst den Stream und schreibst dann. Oder schreibst sofort in eine tmp Datei, löschst die quelldatei und kopierst die tmp Datei drüber.


Anmelden zum Antworten