では、Windows におけるパスのスラッシュ (/ または \) の正しい方向は何でしょうか?
質問
Windows はバックスラッシュを書くことを要求しているようです \
ファイル パスでは、.NET の URI クラスではスラッシュを使用して書き込みます。 /
. 。最も原始的なシステムでも受け入れられる正しい方法はあるのでしょうか?また、.NET の URI では、Windows の他の部分と比べて、他のスラッシュが表示されるのはなぜでしょうか?
解決
ファイルのパスとURIが異なっています。 \
は、Windowsのファイル・パスと/
に正しいURIで正しいです。
だから、このファイルのパス:C:\Documents\Foo
はこのURIに変換します。file:///C:/Documents/Foo
他のヒント
この点では Windows はオペレーティング システムの出来子ですが、多くの API はスラッシュも受け入れます。Windows では、ファイル パスは次のようになります。
C:\Users\jsmith\Documents\file.txt
Unix 系システム (Mac OS X および Linux を含む) では、同じパスは次のようになります。
/home/jsmith/Documents/file.txt
で標準化された URL RFC 1738, いつも プラットフォームに関係なく、スラッシュを使用します。
http://home.example.com/Documents/file.txt
その理由は歴史的なものです。Windows ですら、URL に関する私たちの考え方を覆すことはできません。バックスラッシュについて話しているとき、バックスラッシュを使用している唯一のプラットフォームは Windows (およびその他のいくつかの目新しいもの) です。
Windows 以外でバックスラッシュが使用されているのは UNC パスです。ただし、Windows はこれらの主な支持者でもあります。
\\HOMESVR\Documents\file.txt
そして、何をするにしても、自分の Web サイトのコマーシャルを作成して、「私の会社のドットコム バック スラッシュ プロモーション」などと言ってはいけません。
は、この理由は、歴史の小さな作品です。 UNIXが作成された、または私はむしろUNICSを言うべきときは、ディレクトリのセパレータとして/を選びました。 戻る日で、記憶媒体はかなり小さく、ルート内のすべてのディレクトリが別のマウントされたストレージデバイス(/ binに/ libになど)
マイクロソフトのリリースMS-DOSバージョン1.0は、ディレクトリをサポートしていませんでした。彼らはプログラムからのパラメータに/文字を使用(プログラム/ A / B)
MS-DOS 1.0、Q-DOSの迅速なリブランディングは、CPある/ Mは、ドライブ文字継承されるオペレーティングシステム、誘導された(C:A。など)
それ以降のバージョンでは、彼らはいくつかのディレクトリのサポートを追加したいよう/すでに彼らのオペレーティングシステムに別の意味を持っていたので、、彼らは\を使用することを選択します。
私はほとんどの人が気付いて、まだどのように彼らの作品に大きな影響を持っていないと仮定現代のオペレーティングシステム、コンピュータの歴史の多くの遺物があります。
だから、正しい方法は何ですか?いずれかが存在する場合、私は、Microsoftが彼らのDOSにディレクトリサポートを実装する前にUNIXライクなオペレーティングシステムがある方法で出ていたので。
それは/だと言うだろう側の注意点として、および.NETの話、あなたは現在のパス区切りを取得するためにSystem.IO.Path.DirectorySeparatorChar
を使用する必要があります。
限り、ファイルシステムのパスセパレータが行くように、私はWindows上でのすべてののAPIはスラッシュを受け付けます(おそらくないいくつかのバグのものがある)ことを信じて - 問題は、そのほとんどのアプリケーションでありますそれらを受け入れる(または正しくそれらを解析)しません。
私が正しくリコール場合は、実際には、でもMS-DOSは、サブディレクトリ(V2.0)の支援を開始して以来、APIレベルでのパスの区切り文字として「/」を受け入れた - しかし、その時点で「/」文字がすでに持っていましたバックスラッシュは、事実上のパスDOSのセパレータ(以降Windowsの場合)となりましたので、コマンドラインオプションの「スイッチ」の文字として確立されています。
URIは、ファイルパスと類似しているが、異なる動物であり、そしてURIは、常に別の構成要素に「/」を使用する必要があります。 WindowsアプリケーションやAPI、おそらく人々はそれらのシステムとのURIのセパレータとしてバックスラッシュを使用して精通しているためか「\」のURIにおけるセパレータとして受け入れても、ローカルファイルを表すために使用することができます。
<時間>その日の無駄なトリビア - MS-DOSのいくつかの初期のバージョンでは、コマンドラインオプションスイッチの文字を変更するためのAPIがあった(一般からの「/」に「 - 」)コマンドを見ることができるので、よりUnixライクなとコマンドは、コマンドラインでパス区切りとして「/」を受け入れるだろう。 APIは、(それが普遍的アプリケーションでサポートされていなかったので、私は推測する)あまり成功を超えました、それはそれ以降のバージョンで削除されました。
うーん...第二読会に、この全体の答えはほとんど役に立たないトリビアです。
Windowsがファイルシステムの区切りのためにバックスラッシュ(\
)を使用しています。他のすべてのためにスラッシュが(/
)が使用されています。それはユニフォームリソース識別子が定義されているの方法であるためUri
タイプは、スラッシュを使用します。
ウェブは、スラッシュ(/)をパス内のディレクトリを区切るのUNIXの途中に基づいています。バックスラッシュを使用してWindowsセパレートディレクトリ(\)
正しい方法は、それの使用に依存します。 Windowsマシン上のローカルファイルへのパスの場合は、バックスラッシュを使用します。 UNIXベースのマシン上にあるWebリソースやファイルへのパス(含まマック、Linuxなど)の場合は、スラッシュを使用します。
それはウェブブラウザで使用するためのフォーマットですので、.NETのURIはスラッシュを使用しています理由はある。
サーバは、ハードドライブ上のファイルへのリンクのWebリソースに必要なすべての作業を行います。
は、Windowsがパスの両方を受け入れます。
WindowsエクスプローラとタイプC:/Temp/Foo
を開こう、c:\Temp\Foo
が正しく開かれます。
\バックスラッシュは、危険です。多くのプログラミング言語は、用途が脱出のためにバックスラッシュというのprintf相当するものがあります。
/ Frontslashは、ほとんど無害です。
:。コロンとしたアップル社が使用している(と、まだされてある程度まで)