Pfad für Dateien

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von BeatsleigherXDA.

    Pfad für Dateien

    Moin!

    Ich bin Umsteiger von VB 4.0 auf VB Net.

    Folgende Idee:
    Ich brauche einen Platz, besser einen Ordner, in dem ich Dateien speichern kann oder von wo ich lesen kann. Ich will z.B. zum Start aus einer Datei bestimmte Konfigurationen lesen (sowas wie eine .ini Datei) und habe als Ausgabe z.B. pdf Dateien.
    Ich habe jetzt herausbekommen, dass ich mit:

    Quellcode

    1. Dim Verzeichnis As String = Path.GetDirectoryName(Application.ExecutablePath)


    den Projektpfad herausbekomme. Kann ich dieses Verzeichnis nutzen um dort Ausgaben zu machen? Ich würde Unterordner erstellen wollen.
    Wenn ich eine .ini Datei erstelle, wie bringe ich das Projekt dazu diese beim Veröffentlichen "mitzunehmen"?

    Danke mgbig
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )
    Ich würde mal sagen spätestens seit Windows Vista sollte man nicht mehr im selben Ordner wo das Programm selber liegt Konfigurationsdateien usw. ablegen, weil z.B. in "C:\Programme" normalerweise die Rechte fehlen.

    Du solltest deine Dateien eher an einen von diesen Orten ablegen. Kannst natürlich auch einen Ordner für deine Anwendung in einem dieser Ordner erstellen und dort deine Dateien ablegen.

    C:\Users\username\AppData\Local
    C:\Users\username\AppData\Roaming

    Wenn ich das jetzt richtig in Erinnerung habe, wird alles was du unter dem Pfad mit "Roaming" ablegst auch übers Netzwerk verteilt (z.B. im Falle von ein Benutzer meldet sich auf zwei unterschieden PCs an). Dort solltest du also wohl auch eher keine großen Datenmengen abladen.

    VB.NET-Quellcode

    1. Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)


    Environment.GetFolderPath-Methode (Environment.SpecialFolder)
    msdn.microsoft.com/de-de/library/14tx8hby(v=vs.110).aspx

    Environment.SpecialFolder-Enumeration
    msdn.microsoft.com/de-de/libra…cialfolder(v=vs.110).aspx

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „concu“ ()

    mgbig schrieb:

    "mitzunehmen"
    Füge die INI als Datei Deinem Projekt hinzu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ;(
    blöde Frage (eines Newbies):

    Wo genau in den Settings lege ich das fest?

    Vermutet hätte ich es in Projekt> [Projektname]-Eigenschaften. Aber da kann man so viel einstellen ?( Oder liege ich ganz falsch?
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )
    @mgbig Projekt -> Eigenschaften -> Einstellungen
    und Zugriff mit My.Settings.DEIN_NAME
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    2. Möglichkeiten:

    Ok, das hat soweit geklappt. Ich habe unter obigen Einstellungen dies hinzugefügt:

    INIPfad | String | Anwendung | C:\Users\Administrator\AppData\Local\

    und ich kann das ganze mit My.Settings.INIPfad abrufen.
    Aber die DATEI wird dann ganz physikalisch nicht mit veröffentlich, oder? Es ist ja nur ein String, und das wäre schon ein Wunder wenn die mitkommt. Ich könnte mit dieser Version leben, aber frage mich ob es nicht noch schöner geht. Man kann unter Typ ja quasi 1.0000000 Typen einstellen .... :S

    Aber mit

    Quellcode

    1. Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)


    bekomme ich den Pfad auch. Hier müsste nur noch ein Ordner für meine Anwendung ergänzt werden. Gleiches Problem: Kommt die Datei beim Veröffentlichen mit?

    mgbig
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

    mgbig schrieb:

    Ich habe unter obigen Einstellungen dies hinzugefügt
    Das ist suboptimal.
    Eine INI-Datei sollte immer fest zum System oder fest zur Applikation abgelegt werden, da ist es nicht erforderlich, deren Pfad zu speichern.

    VB.NET-Quellcode

    1. Dim path1 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    2. Dim path2 = IO.Path.GetDirectoryName(Application.ExecutablePath)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würde sagen, du speicherst deine Einstellungen immer in AppData/Roaming/MyApp/conf oder gleich userProfile/MyApp/Conf oder so.

    C#-Quellcode

    1. public const String confFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyApp", "Conf", "config.ini");
    2. if (!File.Exists(confFile))
    3. File.Create(confFile).Close();
    4. else ; (; mit Code ersetzen...)


    VB.NET-Quellcode

    1. Public Const String confFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyApp", "Conf", "config.ini")
    2. If Not File.Exists(confFile) Then
    3. File.Create(confFile).Close()
    4. Else
    5. ' Code hier einfügen
    6. End If
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln