Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Fr 07.08.15 21:57 
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:

ausblenden volle Höhe 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:
ausblenden C#-Quelltext
1:
2:
3:
OpenDileDialog open = new OpenFileDialog();
open.Filter = "HTML- Datei|*.html|CSS- Datei|*.css";
open.DefaultExt = "*.html";


und dann einfach:
ausblenden 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 user profile iconTh69: Topic aus C# - Die Sprache verschoben am Sa 08.08.2015 um 09:10
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
var path = "C:\some\cool\directories\myfile";
path += ".html"// <--
using (StreamWriter writer1 = new StreamWriter(path)) {
    // write to file
}


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.


Zuletzt bearbeitet von Palladin007 am Fr 07.08.15 22:59, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Csharp-programmierer
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 07.08.15 22:57 
Form2.eingabe.ToString() enthält den Filenamen?

Dann würde ich mit

ausblenden 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.

Für diesen Beitrag haben gedankt: Csharp-programmierer
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Fr 07.08.15 23:33 
Das heißt also ich kann es so machen:

ausblenden C#-Quelltext
1:
2:
string x = Path.Combine(path, filename);
string y = Path.ChangeExtension(x, ".html);


Das hat die selbe Bedeutung wie
ausblenden C#-Quelltext
1:
2:
string x = Path.Combine(path, filename);
string y += ".html";
?

Mfg
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.
ausblenden 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
ausblenden Quelltext
1:
2:
3:
4:
5:
C:\test\file.name.html
C:\test\file.html

C:\test\filename.html
C:\test\filename.html

Für diesen Beitrag haben gedankt: Csharp-programmierer
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Sa 08.08.15 18:19 
Vielen Dank für eure Hilfreichen Antworten :)