Forum: PC-Programmierung C# Datei kopieren


von Fuzzi59 (Gast)


Lesenswert?

Hallo, ich möchte eine Datei kopieren, aber ohne File.Copy(). Ich möchte 
nämlich den "Text" der Datei haben. Ich habe es bereits so versucht:
1
OpenFileDialog ofd = new OpenFileDialog();
2
            ofd.ShowDialog();
3
            SaveFileDialog sfd = new SaveFileDialog();
4
            sfd.ShowDialog();
5
            StreamWriter sw = File.CreateText(sfd.FileName);
6
            path = ofd.FileName;
7
            StreamReader sr = new StreamReader(new FileStream(path, FileMode.Open));
8
            while (sr.Peek() != -1)
9
            {
10
                data = sr.ReadLine();
11
                sw.WriteLine(data);
12
            }
13
            sr.Close();
14
            sw.Close();
So kopiert er wohl die Daten, aber die Datei kann dann nicht mehr 
geöffnet werden, weil sie nicht richtig kopiert wurden und dadurch 
teilweise zeilenverschoben sind.

von bluppdidupp (Gast)


Lesenswert?

Sofern der Zeichensatz der Originaldatei UTF8 ist, hat das doch quasi 
den gleichen Effekt wie File.Copy?

von Fuzzi59 (Gast)


Lesenswert?

Soweit ich weiß ist das UTF16.
Ich habe es jetzt noch mal so versucht:
1
data = sr.ReadToEnd();
2
            sw.WriteLine(data);
Da sind beide Dateien identisch, trotzdem kann die kopierte nicht 
geöffnet werden.

von Lochrasterfan (Gast)


Lesenswert?

... die üblichen Scherereien mit der Zeichenkodierung ... außerdem 
solltest du deinen StreamWriter nicht WriteLine aufrufen lassen, wenn du 
schon den Reader den ganzen Dateiinhalt einlesen lässt. Probier's mal 
damit:
1
            StreamWriter sw = new StreamWriter("C:\\copytest.txt", false, System.Text.Encoding.Default);
2
            StreamReader sr = new StreamReader("C:\\test.txt", System.Text.Encoding.Default);
3
            sw.Write(sr.ReadToEnd());
4
            sr.Close();
5
            sw.Close();
Wenn das nicht klappt, spiel' an den Einstellungen 
"System.Text.Encoding.Default" herum. Man weiß ja nicht, wie deine 
Dateien codiert sind und welche Einstellungen dein Computer hat.

von Fuzzi59 (Gast)


Lesenswert?

Sehr gut, danke es hat funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.