Laden...

OpenFileDialog und Filestream ?

Erstellt von Rope vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.735 Views
R
Rope Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren
OpenFileDialog und Filestream ?

Also ich habe greade angefangen mit C#.Hoffendas es die frage net schon gibt ,wenn doch ,hab ich sie übersehen.
Ich hoffe es kann mir jemand helfen den Irgenwie versteh ich den Zusammenhang zwischen dem Dialog und dem Filestream net ...

using System;
using System.Windows.Forms;
using System.Drawing;
using System.IO;

public class neu : Form
{
    int i=0;
    string[,] Dateis = new string[10,10];
    public static void Main()
    {
        Application.Run(new neu());
    }
    neu()
    {
        Button b1 = new Button();
        b1.Location=new Point(10,10);
        b1.Size=new Size(40,30);
        b1.Text="auf";
        b1.Parent=this;
        b1.Click += new EventHandler(b1click);

        Button b2 = new Button();
        b2.Location=new Point(60,10);
        b2.Size=new Size(40,30);
        b2.Text="aauf";
        b2.Parent=this;
        b2.Click += new EventHandler(b2click);
    }

    void b1click(object obj, EventArgs e)
    {
        OpenFileDialog ofd =new OpenFileDialog();
        ofd.InitialDirectory="f:\\";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            Dateis[0,i]=ofd.FileName;
            i++;
        }
    }

    void b2click(object obj, EventArgs e)
    {
        FileStream fs=new FileStream("Root.csv",FileMode.Open);
        StreamWriter sw = new StreamWriter(fs);
        sw.WriteLine("Irgenwas");
        sw.WriteLine();
        sw.Close();
    }
}

Das "Irgenwas" is zunächst mal Platzhalter.
Das File wird aber nur geschrieben wenn ich zuvor nicht den OpenfileDialog geöffnet haben und eine Datei mit öffnen gewählt habe.
Warum ist das so ? und wie kann ich das Umgehen ?

// EDIT: Das nächste mal bitte Code-Tags verwenden. Noodles.

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo Rope,

soweit ich das sehe, gibt es auch keinen Zusammenhang zwischen dem OpenFileDialog und dem FileStream, abgesehen davon, dass durch das Wählen einer Datei im FileOpenDialog das Arbeitsverzeichnis geändert wird. Da Du beim Öffnen des FileStreams jedoch keinen absoluten Pfad angegeben hast, sondern nur einen Dateinamen wird versucht, die Datei an einem anderen Ort zu öffen.

Erschwerend kommt hinzu, dass du die Datei mit FileMode.Open öffnest, was bedeutet, dass das Betriebssystem eine vorhandene Datei öffnen soll. Da Du die Datei aber schreiben willst, wäre wohl File.ModeCreate sinnvoller, was bedeute, dass das Betriebssystem eine neue Datei erstellen soll oder - wenn die Datei bereits vorhanden ist - diese überschreiben.

Einfacher wäre es ohnehin den FileStream ganz zu vergessen und einfach StreamWriter sw = new StreamWriter("Root.csv"); zu verwenden.

Der OpenFileDialog öffnet übrigens die ausgewählten Dateien nicht, sondern stellt dir nur den Zugriff auf die Auswahl in ofd.FileName (bzw. ofd.FileNames) zur Verfügung. ofd.FileName kannst du dann in new StreamWriter(ofd.FileName) verwenden, um die Datei zu öffnen (was dann aber wohl auch in b1click und nicht in b2click passieren sollte).

HTH

herbivore

R
Rope Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren

Vielen Dank jetzt weis ich endlich worans gelegen hat.

Zu den restlichen Anmerkung sag ich auch mal danke auch wenn ich diesen code nur geschireben hab um den fehler zu extrahieren 🙂
Im Usprung war noch mehr Code der dann auch wirklich was geöffnet hat (mit dem ofd.Filename)
Das mit dem Streamwriter muss ich morgen mal Probieren.