Announcement

Collapse
No announcement yet.

Datenspeicherung im Userverzeichnis

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenspeicherung im Userverzeichnis

    Hi,

    ich habe eine Anwendung, bei der Daten gespeichert werden soll. Da man die Daten nicht im Ausführungsverzeichnis speichern kann gibt es ja die Userverzeichnisse. Wenn ich jetzt probiere die Datei "Daten.txt" zu erzeugen...

    [highlight=c#]
    File.Create(Environment.SpecialFolder.ApplicationD ata + "\\Daten.txt");
    [/highlight]

    gibt es eine DirectoryNotFoundException.
    Wie kann man also auf diese SpecialFolder Ordner zugreifen? Die nachher hineingeschrieben Daten müssten ja bei einem erneuten Programmstart noch da sein , oder?

    Greets
    Neodym

  • #2
    Da man die Daten nicht im Ausführungsverzeichnis speichern kann
    Warum sollte man das nicht können?

    Warum die Daten auf dem gesamten Rechner verteilen? Ich halte es für eine Unart, die MS da eingeführt hat. Wechselt man das Betriebssystem oder setze es auf einen alten Stand zurück, finden die Anwendungen ihre Daten nicht mehr.

    Warum schaust du dir nicht an, was

    Environment.SpecialFolder.ApplicationData

    ergibt und prüfst, ob es tatsächlich vorhanden ist oder nicht
    Christian

    Comment


    • #3
      Also die Sache ist die:
      Wenn ich das Programm entwickle und debugge kann ich es im Programmverzeichnis speichern. Wenn ich aber den Assembly erzeuge, und das Programm installiert habe, dann liegt es unter c:\ProgramFiles
      Wenn ich jetzt versuche auf c:\ProgramFiles zuzugreifen, weil da meine Daten liegen erhalte ich eine Exception, weil ein Programm nicht so ohne weiteres auf das lokale Programmverzeichnis zugreifen kann.

      Edit:
      Ich hätte einfach nur gerne einen Tipp, wie ich auf das Verzeichnis zugreifen kann (werde mich mal an das vorgegebene Konzept halten)

      Comment


      • #4
        Prüfen ob der Ordner vorhanden ist:
        [highlight=c#]

        if (File.Exists(Environment.SpecialFolder.Application Data.ToString()))
        {
        File.Create(Environment.SpecialFolder.ApplicationD ata.ToString() + "\\Daten.txt");
        }
        [/highlight]

        Die Bedingung im Kopf ergibt false. Aber das kann ja eigentlich nicht sein, weil irgendwohin muss man ja seine Daten speichern. Der Ordner müsste ja existieren, sonst würde diese Enumeration ja keinen Sinn ergeben
        Wo soll man die Daten denn dann hinlegen, außer ins Programmverzeichnis (die Registry ist ja nicht empfehlenswert).

        Greets
        Neodym

        Comment


        • #5
          Es gibt einen Unterschied zwischen FILE und DIRECTORY

          http://msdn.microsoft.com/en-us/libr...ry.exists.aspx

          Schau dir das Beispiel an

          http://msdn.microsoft.com/en-us/libr...s03.aspx#Y1254
          Christian

          Comment


          • #6
            Ok, mein Fehler, aber wenn ich statt dem File Dircetory hinschreibe, ergibt die Bedingung im Schleifenkopf immernoch false
            Wie passt das ins Bild?

            Greets
            Neodymn

            Comment


            • #7
              Warum machst du nicht die von mir beschriebene Prüfung?
              Christian

              Comment


              • #8
                Ok sorry ich versteh's gerade nicht.
                Ich soll doch prüfen ob der Ordner existiert.
                Das tue ich doch mit Directory.Exists

                Comment


                • #9
                  Warum schaust du dir nicht an, was

                  Environment.SpecialFolder.ApplicationData

                  ergibt und prüfst, ob es tatsächlich vorhanden ist oder nicht
                  Würde mal schauen, ob der Ordner nun tatsächlich da ist oder nicht!!!
                  Christian

                  Comment


                  • #10
                    [highlight=c#]
                    if (Directory.Exists(Environment.SpecialFolder.Applic ationData.ToString()))
                    {
                    Console.WriteLine("Ordner existiert");
                    File.Create(Environment.SpecialFolder.ApplicationD ata.ToString() + "\\Daten.txt");
                    }

                    [/highlight]

                    Wenn ich das genauso ausführe, dann wird die Zeile "Ordner existiert" nicht ausgegeben. Das ToString ist nur da weil die Methode einen String erwartet. Stelle ich einen Klammeraffen vor den ganzen Ausdruck wird die Zeile auch nicht ausgegeben.
                    Ich mach doch, was du mir sagst, oder????

                    Comment


                    • #11
                      Nein

                      Printe dir Environment.SpecialFolder.ApplicationData.ToString () irgendwo hin oder schaue im Debugmode nach was drin steht. Öffne den Windowsexplorer und schaue nach ob der Ordner wirklich existiert.....
                      Christian

                      Comment


                      • #12
                        Den Ordner gibt es nicht.
                        Aber dieses Directory muss doch standardmäßig von Windows zur Verfügung gestellt werden. Den Ordner muss es ja irgendwo geben. Ihn gibt es aber nicht. Welchen Sinn hat es also eine solche Enumeration zu definieren.
                        Ich habe immer angenommen, dass diese Specialfolders Ordner sind in die verschiedene Programm ihre Daten reinschreiben und wieder rauslesen können. Und ich bin davon ausgegangen dass diese auch existieren.

                        Was heißt das dann für mich. Wie krieg ich jetzt meine Daten in diese Specialfolders rein, wenn sie nicht da sind (wo sie doch eigentlich von Windows her da sein müssten)

                        Greets
                        Neodym

                        Comment


                        • #13
                          http://msdn.microsoft.com/de-de/libr...ialfolder.aspx

                          LocalApplicationData mal nutzen
                          Christian

                          Comment


                          • #14
                            Danke für deine Hilfe!!


                            Nur der Vollständigkeit halber:

                            http://stackoverflow.com/questions/1...n-windows-7-as

                            Comment

                            Working...
                            X