Frage

Ich habe ein Programm, das ich brauche unter * nichts und Windows läuft. weil das Programm Dateipfade von Dateien das Problem nimmt ist das, was über die \ vs / Problem zu tun.

Mein aktueller Gedanke ist in einem regulären Ausdruck zu bringen, die die falschen nach rechts einem wandeln je nachdem, welches System ich bin. Dies wird zur Folge haben, beide Arten der Arbeit auf beiden Systemen lassen. Abgesehen von der Tatsache, dass jetzt habe ich zwei Probleme , sieht jemand eine andere Probleme?

(andere bessere Lösungen sind mehr als willkommen)

Edit:. Das primäre Problem ist Windows-Pfade immer auf Unix zu arbeiten, anstatt umgekehrt

War es hilfreich?

Lösung

Die / in win32 zu voll unterstützt.

Siehe auch diese bezogene Frage

Andere Tipps

Windows wird im Allgemeinen akzeptiert entweder \ oder /, so die Standardisierung auf / kann Ihr Problem einfacher machen, solange Sie die vollständige Kontrolle über die Dateinamen haben.

Haben Sie darüber nachgedacht, eine „Datei-Manager“ Klasse erstellen, die alle Datei Pathing Probleme für Sie behandeln? Auf diese Weise in Ihrer E-Mail-Anwendung, wenn Sie eine Datendatei einlegen, Sie so etwas wie dies nennen können.

LoadApplicationData(FileManager.GetDataFilePath)

Dann wird die Datei-Manager die Umgebung erkennen, dass es in ist und gibt die richtigen Dateipfad Option. Auf diese Weise können Sie auch (vs / usr oder was auch immer wie Program Files) als auch für Win32 vs. Unix locatio Standards empfangen.

Beachten Sie, dass Win32 Pfade komplex sind, wenn Sie Laufwerksbuchstaben (kein analog auf Unix) und die spezielle ‚Gabeln‘ (MacOS Pre-X Begriff betrachten - ebenfalls keine analogen auf Unix im allgemeinen, wenn auch MacOS X sie hat - Überraschung, Überraschung ), die bereitgestellt werden können. Seien Sie vorsichtig.

Erstellen Sie einen Parser für Ihre Eingabe eine Baumstruktur von Knoten, die Verzeichnisse zu erstellen. Dann können Sie ‚retten‘, indem Sie den Baum zu Fuß und zu schreiben, was auch immer delimiters Sie wollen oder optional verschiedene Dinge zu tun, wie die Überprüfung, ob das Verzeichnis vorhanden ist oder das Schreiben Meta-Dateien. Das ist eigentlich etwas, das ich gerade jetzt wäre nützlich für meine eigene Anwendung zu denken: -)

Sie nicht sagen, welche Sprache Sie verwenden, also werde ich zu egoistisch c / c ++ annehmen. steigern , wenn Sie bereit sind, es zu benutzen, hat einen Dateisystem-Bibliothek . Natürlich, wenn Sie eine dynamische Sprache verwenden, Abstraktion FS Bibliotheken wahrscheinlich existieren bereits auch dort (zum Beispiel in Perl, File :: Spec ist ziemlich Standard).

Sie haben uns gesagt, nicht, welche Art von Dateien, die Sie Pfade lesen in aus. Ich gehe davon aus, dass sie Dateien Config. In diesem Fall gibt es viele Möglichkeiten, IMHO die richtige Antwort zu entwerfen Ihr Programm Pfade zu vermeiden Manipulation, wenn möglich. Ich stellte eine Antwort hier:. https://stackoverflow.com/a/40980510/2345997 , die relevant ist

Möglichkeiten:

  1. eine Befehlszeilenoption hinzufügen, die ein Benutzer den Pfad in Frage, anstatt es zu Lesen aus einer Konfigurationsdatei angeben kann.
  2. eine Befehlszeilenoption hinzufügen, so dass der Benutzer einen Basispfad angeben. Pfade in der Konfigurationsdatei, wie unter diesem Basispfad befinden interpretiert wird.
  3. Teilen Sie Ihre Konfigurationsdatei in drei. Eine Datei Cross-Plattform-Konfiguration haben wird, wird eine weitere Datei Fenster haben nur Konfiguration und eine letzte Datei wird nur Linux-Konfiguration. Dann kann der Benutzer den richtigen Pfad angeben, für Windows und Linux. Unter Windows Ihr Programm wird die plattformübergreifende Konfigurationsdatei und die Fenster nur Konfigurationsdatei lesen. Unter Linux wird es die plattformübergreifende Datei und die nur Linux-Konfigurationsdatei lesen.
  4. Fügen Sie Vorverarbeitung zu Ihrer Konfigurationsdatei Parsing. Dies ermöglicht Ihnen, eine Konfigurationsdatei haben, wo der Benutzer das Programm ignorieren einige der Zeilen in der Datei in Abhängigkeit von dem machen OS das Programm läuft. Daher wird der Benutzer in der Lage sein, den Pfad zur Datei zweimal angeben. Einmal für Linux, und einmal für Windows.
  5. das Design ändern, so dass die Dateien immer im gleichen Verzeichnis wie die ausführbare Datei befinden sich -. Dann nur der Benutzer der Dateinamen in der Konfigurationsdatei gibt an, anstatt Pfade zu Dateien
  6. Verwenden Sie eine einfache Funktion, die „/“ auf „\“ schaltet. Dann dokumentieren an den Benutzer, dass sie Pfade als Linux Pfade angeben müssen, und diese Transformation wird für Fenster angewendet werden.
  7. Erstellen Sie Ihren eigenen Weg Mini-Sprache für diese und dokumentieren sie für den Benutzer. Zum Beispiel: „/“ - gibt ein Verzeichnis Separator, {root} - erweitert, um die Wurzel des Dateisystems, {cwd} - erweitert auf das aktuelle Verzeichnis, {app} - erweitert, um den Pfad zur Anwendung etc ... Dann wird die Benutzer können Dateipfade wie angeben:. {root} /myfiles/bob.txt auf beiden Plattformen
  8. Einige Wege werden auf beiden Plattformen arbeiten. Z. B: relative Pfade wie ../my Dateien / bill.txt. Schränken Sie Ihre Anwendung mit diesen Pfaden nur zu arbeiten. Dokument dieser Einschränkung und wie Ihre Anwendung behandelt Pfade an den Benutzer.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top