2011-08-26 10 views
19

Windowsのローカルファイルパスとネットワークファイルパスでは大文字と小文字は区別されません。Windows環境のファイルパスでは大文字と小文字は区別されませんか?

+2

「安全」を定義します。大文字と小文字を区別するファイル名を使用してNTFSを構成することはできますが、誰もそれを実行することはほとんどありません。しかし、なぜあなたはこれを知る必要がありますか? –

+1

@Ken、約51%の臭いはありません。たくさんの質問 - しばしば最も興味深い - ちょうど合理的な答えがありません。 51%は、これはアウトラインのチェックマークが何であるかを知らないユーザーではないことを示しています。彼の他の欠点が何であれ、彼は明らかに何を受け入れるかについていくつかの理性的な決定を下す。 –

+1

@Henning、私は同意しない。あなたが100の質問をし、そのうちの50人が誰にも答えることができないならば、あなたは多くの悪い質問をしているか、あなたは話題以外の質問をしているか、他の人に恩恵を受けるためにあなた自身の質問に答えること。しかし、もちろん、あなたは自分の意見を得る権利があります。 :) –

答えて

16

はい。 Windows(ローカル)ファイルシステム(NTFS、FAT、およびバリアントを含む)は、大文字と小文字を区別しません(通常)。ネットワークファイルシステムの基本的な実装では、大文字と小文字が区別されることがありますが、Windowsにアクセスできるようにするほとんどのソフトウェア(SMBなど)は、大文字と小文字を区別するファイルシステムをWindowsで大文字と小文字を区別しないように自動的に表示します。

詳細については、Wikipedia article on filenamesのセクションをご覧ください。

20

Windowsでの大文字と小文字の区別は、アプリケーションがファイルを開く方法で実際に実装されます。 NTFSは大文字と小文字を区別するファイルシステムであり、同一ディレクトリ内の大文字と小文字の区別が異なる同一名前のファイルを楽しく保存できます。

すべてのファイルは最終的にCreateFile API経由で開かれます - FILE_FLAG_POSIX_SEMANTICSフラグがコールに渡され(アクセスされるファイルシステムがネイティブで大文字と小文字を区別している場合)、ファイルは完全な名前に基づいて開きます。 FILE_FLAG_POSIX_SEMANTICSが渡されない場合、ファイルシステムは大文字と小文字を区別しないファイルを開き、一致する名前のファイルの1つを開きます。複数のものがある場合は、どちらが実際に開かれるかは未定義です。

Windows上のCおよびC++ランタイム実装のほとんどは、このメカニズムへのアクセスを提供せず、このフラグを使用しないため、大文字と小文字を区別する動作にアクセスする唯一の方法はWindows APIを直接使用することです。

tl; dr - あなたの言語ランタイムはおそらくファイルシステムを大文字小文字を区別しないか、大文字と小文字を区別しないようにします。 Windows APIを直接使用すると、サポートされているファイルシステムに完全にアクセスできます。

関連する問題