Was ist also die richtige Richtung des Schrägstrichs Pfad (/ oder \) unter Windows?

StackOverflow https://stackoverflow.com/questions/1589930

  •  22-09-2019
  •  | 
  •  

Frage

Es scheint, Windows-beharrt eine Backslash \ in Dateipfaden auf das Schreiben, während .NET URI Klasse sie mit einem Schrägstrich / schreibt. Gibt es eine richtige Art und Weise, dass selbst in den primitivsten Systemen akzeptiert wird? Und warum ist .NET URI den anderen Strich zeigt im Vergleich mit dem Rest von Windows?

War es hilfreich?

Lösung

Ein Dateipfad und eine URI ist unterschiedlich. \ korrekt in einem Windows-Dateipfad und / ist korrekt in einer URI.

So diesen Dateipfad: C:\Documents\Foo übersetzt zu dieser URI: file:///C:/Documents/Foo

Andere Tipps

Windows ist das uneheliche Kind Systeme in dieser Hinsicht für den Betrieb, aber eine Menge von APIs wird auch Schrägstriche akzeptieren. Unter Windows ein Dateipfad sieht wie folgt aus:

C:\Users\jsmith\Documents\file.txt

Auf einem Unix-artigen System (einschließlich Mac OS X und Linux), den gleichen Weg wie folgt aussehen:

/home/jsmith/Documents/file.txt

Eine URL, standardisiert in RFC 1738 , immer unabhängig von der Plattform verwendet Schrägstriche,:

http://home.example.com/Documents/file.txt

Der Grund dafür ist historisch. Nicht einmal Windows kann unser Denken auf URLs umkehren. Wenn Sie Schrägstriche im Gespräch sind, ist die einzige Plattform, die Sie, dass die Anwendungen sie ist von Windows zu finden (und einige andere Neuheit sind).

Wo man sehen Schrägstriche verwendet als Windows UNC-Pfade wäre - aber ist Windows der Hauptvertreter dieser auch:

\\HOMESVR\Documents\file.txt

Und was auch immer Sie tun, nicht eine Werbung für Ihre Website machen und sagen: „meine Firma dot com Backslash promotion“.

Der Grund dafür ist ein kleines Stück Geschichte. Wenn UNIX erstellt wurde, oder sollte ich eher sagen UNICS, wählten sie den / als Trennzeichen für Verzeichnisse. Zurück in den Tagen, Speichermedien waren eher klein, und jedes Verzeichnis im Stamm war ein weiteres Speichergerät montiert (/ ist / lib etc.)

Wenn Microsoft Release MS-DOS Version 1.0, ist es nicht Verzeichnisunterstützung hat. Sie verwendeten das Zeichen / für Parameter von Programmen (Programm / a / b)

MS-DOS 1.0, eine schnelle Wiedermarke von Q-DOS ist ein CP / M-Betriebssystem abgeleitet, aus dem sie von Laufwerksbuchstabe vererbt (A: C:. Etc)

Wie in späteren Versionen sie einige Verzeichnisunterstützung hinzufügen wollten, wählten sie die \ verwenden, da die / bereits eine andere Bedeutung in ihrem Betriebssystem hatte.

Es gibt viele Artefakte der Computergeschichte in modernen Betriebssystemen, die ich die meisten Leute annehmen, erkennen nicht, haben aber nach wie vor einen großen Einfluss darauf, wie sie funktionieren.

Also, was ist der richtige Weg? Wenn es eine gibt, würde ich sagen, dass es das / ist, weil UNIX-artigen Betriebssystemen gab es Art und Weise, bevor Microsoft Directory-Unterstützung in ihre DOS implementiert.

Als Randbemerkung und sprechen über .NET, sollten Sie System.IO.Path.DirectorySeparatorChar verwenden den aktuellen Pfad Separator zu erhalten.

Was Dateisystempfad Separatoren gehen, ich glaube, dass unter Windows alle APIs Schrägstriche akzeptiert (aber vielleicht gibt es einige Buggy diejenigen, die nicht tun) - das Problem ist, dass die meisten Anwendungen nicht akzeptieren sie (oder analysieren sie falsch).

In der Tat, wenn ich mich recht erinnere, auch MS-DOS akzeptiert ‚/‘ als Pfadtrennzeichen auf API-Ebene, seitdem es unterstützt Verzeichnisse (v2.0) gestartet - aber zu diesem Zeitpunkt das Zeichen ‚/‘ hatte bereits wurde als ‚Schalter‘ Zeichen für Befehlszeilenoptionen festgelegt, so dass der Backslash des defacto Pfadseparator auf DOS (und später Windows) wurde.

URIs ist ein ähnliches, aber verschiedenes Tier von Dateipfaden und URIs sollten immer verwenden ‚/‘ zu separaten Komponenten. Windows-Anwendungen und APIs wahrscheinlich akzeptieren ‚\‘ als Trennzeichen in URIs wahrscheinlich, weil die Menschen vertraut sind mit der Verwendung von umgekehrten Schrägstrich als Trennzeichen auf diesen Systemen und URIs auch verwendet werden können lokale Dateien darzustellen.


Useless Trivia der Tages - in einigen frühen Versionen von MS-DOS gibt es eine API, um die Befehlszeilenoption Schalter Zeichen zu ändern (in der Regel von ‚/‘ zu ‚-‘), so könnten die Befehle aussehen Unix-artige und die Befehle ‚/‘ als Pfadtrenn auf der Befehlszeile akzeptieren würden. Die API war weniger als erfolgreich (ich schätze, weil es nicht allgemein von Anwendungen unterstützt wurde), und es wurde in späteren Versionen entfernt.

Hmm ... in zweiter Lesung, diese ganze Antwort ist ziemlich nutzlos Nebensächlichkeiten.

verwendet Windows den umgekehrten Schrägstrich (\) für das Dateisystem Begrenzer. Für alles andere der Schrägstrich verwendet wird (/). Der Uri Typ verwendet den Schrägstrich, weil das ist, wie ein Uniform Resource Identifier definiert ist.

Die Bahn wird auf der Grundlage des UNIX Weg der Verzeichnisse in einem Pfad mit einem Schrägstrich abgrenzt (/). Windows-Verzeichnisse trennt mit einem Backslash (\)

Der richtige Weg ist abhängig von seinem Gebrauch. Für einen Pfad zu einer lokalen Datei auf einem Windows-Rechner verwenden Backslash. Für einen Pfad zu einer Web-Ressource oder Datei auf einer Basis Maschine UNIX befindet (einschließlich Mac, Linux), verwenden Sie einen Schrägstrich.

Die URI verwendet Schrägstriche Vernunft .NET, weil es in einem Web-Browser für die Verwendung der Formatierung wird.

Der Server wird auf Dateien auf einer Festplatte alle notwendigen Arbeiten zu Link Web-Ressourcen tun.

Fenster akzeptiert sowohl für den Pfad.

Versuchen Sie, Windows Explorer und geben C:/Temp/Foo zu öffnen, wird c:\Temp\Foo richtig geöffnet werden.

\ Aufkantung ist gefährlich, da man mit Flucht des ganzen Zeit vorsichtig sein muß. Viele Programmiersprachen haben eine printf Äquivalent, dass Anwendungen für die Flucht Backslash.

/ Frontslash ist meist harmlos.

. Kolon war (und bis zu einem gewissen Grad immer noch) verwendet von Apple

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top