Entwickler-Ecke
Basistechnologien - Wie kann ich bei einem StreamWriter eine .html Endung adden?
Csharp-programmierer - Fr 07.08.15 21:57
Titel: Wie kann ich bei einem StreamWriter eine .html Endung adden?
Hallo ihr Experten. Ich habe es jetzt geschafft 3 Hauptordner mit jeweils 2 Unterordnern zu erstellen und deren Pfade zu speichern. Meine Speichern und Speichern_Unter- Funktionen hauen einwandfrei hin:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| private void speichern_unter() { Form2 a = new Form2(); a.label1.Text = "Bitte geben Sie den Namen des Projekts ein: "; a.ShowDialog();
if(Form2.eingabe != null) { try { html_pfad = Path.Combine(Properties.Settings.Default.sHTML, Form2.eingabe.ToString());
using (StreamWriter writer1 = new StreamWriter(html_pfad)) { writer1.Write(rtb_html.Text); writer1.Close(); ist_gespeichert = true; }
css_pfad = Path.Combine(Properties.Settings.Default.sCSS, Form2.eingabe.ToString());
using(StreamWriter writer2 = new StreamWriter(css_pfad)) { writer2.Write(this.rtb_css.Text); writer2.Close(); ist_gespeichert = true; } } catch(Exception re) { MessageBox.Show(re.Message); } } } |
Die Datei wird nun perfekt in die jeweiligen Ordner geschrieben und es haut alles Perfekt hin, wäre da nicht die .html / .css Endung :motz:
Bei einem SaveFileDialog wüsste ich, was ich machen muss:
C#-Quelltext
1: 2: 3:
| OpenDileDialog open = new OpenFileDialog(); open.Filter = "HTML- Datei|*.html|CSS- Datei|*.css"; open.DefaultExt = "*.html"; |
und dann einfach:
C#-Quelltext
1: 2: 3: 4: 5:
| using(StreamWriter s = new StreamWriter(path)) { s.Write(rtb_html.Text); s.Close(); } |
Und dann hat die Datei die .html Endung. Wie bekomme ich das ohne SaveFileDialog hin? Ich möchte ihn nicht aufrufen, da ich dies in meinem derzeitigem Projekt unprofessionell finde.
Könnt ihr mir bitte weiterhelfen?
Mfg :)
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am Sa 08.08.2015 um 09:10
Palladin007 - Fr 07.08.15 22:42
Warum unprofessionell?
Das nutzen viele Anwendungen, es hat den Vorteil, dass der Speichern-Dialog immer gleich aus sieht.
Wenn Du es aber wirklich nicht willst:
C#-Quelltext
1: 2: 3: 4: 5:
| var path = "C:\some\cool\directories\myfile"; path += ".html"; using (StreamWriter writer1 = new StreamWriter(path)) { } |
An den Stream kannst Du keine Dateiendung anhängen, der betrifft nur den Inhalt der Datei und hat damit nichts mit dem Datei-Namen zu tun. Den Namen musst Du beim erstellen der Datei angeben. Wenn der Dateiname eine Endung haben soll, muss der da mit angehängt werden.
Oder Du kopierst die Datei danach, aber das wäre ziemlich umständlich :D
Als kleine Zusatz-Info:
Die Dateiendung hat im Grunde überhaupt keine Bedeutung. Das ist ein Teil vom Namen, wie alles andere auch, die kannst ja auch so viele Punkte in den Namen schreiben, wie Du willst, einzig eine Datei, die nur Punkte als Namen hat, geht nicht :D
Die Endung gewinnt dadurch an Bedeutung, da verschiedene Anwendungen damit verknüft werden, als einfacher Weg, den Inhalt bzw. das Format einer Datei zu markieren.
Ralf Jansen - Fr 07.08.15 22:57
Form2.eingabe.ToString() enthält den Filenamen?
Dann würde ich mit
C#-Quelltext
1: 2:
| html_pfad = Path.Combine(Properties.Settings.Default.sHTML, Form2.eingabe.ToString()); html_pfad = Path.ChangeExtension(html_pfad, ".html"); |
die Endung anhängen bzw. ersetzen. Jemand könnte ja in Form2.eingabe schon was mit Extension eingetragen haben.
Csharp-programmierer - Fr 07.08.15 23:33
Das heißt also ich kann es so machen:
C#-Quelltext
1: 2:
| string x = Path.Combine(path, filename); string y = Path.ChangeExtension(x, ".html); |
Das hat die selbe Bedeutung wie
C#-Quelltext
1: 2:
| string x = Path.Combine(path, filename); string y += ".html"; |
?
Mfg
Ralf Jansen - Fr 07.08.15 23:43
Nein.
Im 1.ten Fall hängst du immer eine Extension dran. Im 2.ten ersetzt du eine eventuell vorhandene Extension oder hängst eine dran falls noch keine vorhanden war.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| string path = Path.Combine(@"C:\test", @"file.name"); Console.WriteLine(path + ".html"); Console.WriteLine(Path.ChangeExtension(path, ".html"));
path = Path.Combine(@"C:\test", @"filename"); Console.WriteLine(path + ".html"); Console.WriteLine(Path.ChangeExtension(path, ".html")); |
Ausgabe
Quelltext
1: 2: 3: 4: 5:
| C:\test\file.name.html C:\test\file.html
C:\test\filename.html C:\test\filename.html |
Csharp-programmierer - Sa 08.08.15 18:19
Vielen Dank für eure Hilfreichen Antworten :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!