web-dev-qa-db-ja.com

単一のドットはWindowsで有効なファイル名ですか?

ドット(.)は、最初と最後の位置を含むファイル名またはディレクトリ名の一部にすることができます。 UNIXでは、パス内の1つのドットは現在のディレクトリを参照するため、名前が.ではないディレクトリにいつでも解決できます。

Windowsで.という名前のディレクトリを作成する方法はありますか?

1
Karl Richter

いいえ。* nixの場合と同様に、1つのドットは現在のディレクトリを意味し、2つのドットは親ディレクトリを意味します。

  • 「。\ temp.txt」のように、現在のディレクトリを表すパスのディレクトリcomponentとしてピリオドを使用します。詳細については、 パス を参照してください。
  • 「..\temp.txt」のように、現在のディレクトリの親を表すパスのディレクトリcomponentとして2つの連続するピリオド(..)を使用します。詳細については、 パス を参照してください。

ファイル、パス、名前空間の命名

実際、より一般的なルールは、Windowsではファイルをドットで終わらせることはできないということです

ファイル名またはディレクトリ名をスペースまたはピリオドで終了しないでください。基盤となるファイルシステムはそのような名前をサポートしている場合がありますが、Windowsシェルとユーザーインターフェイスはサポートしていません。ただし、名前の最初の文字としてピリオドを指定することはできます。たとえば、「。temp」。

見る

その理由は、Win32APIに渡すときに正規化されるためです。

一部の文字は削除されます(区切り文字と相対セグメントの実行を除く)。

セグメントが単一の期間で終了する場合、その期間は削除されます。単一期間または二重期間のセグメントは、上記の相対コンポーネントルールに該当します。 3ピリオド(またはそれ以上)のセグメントは、これらのルールのいずれにも当てはまらず、実際には有効なファイル/ディレクトリ名です。

パスが区切り文字で終わっていない場合、末尾のピリオドとスペース(文字コード32のみ)はすべて削除されます。最後のセグメントが単に単一または二重の期間である場合、それは上記の相対コンポーネントルールに該当します。このルールは、末尾にスペースがあるディレクトリを作成するという驚くべき機能につながります。これを行うには、末尾の区切り文字を追加するだけです。

パスの正規化

NTFS名前空間は完全にPOSIX互換であるため、これらのファイルを作成できないという意味ではありません。ファイル名の正規化を無効にするには、\\?\プレフィックスを追加する必要があります。

ファイルI/Oの場合、パス文字列の「\?\」プレフィックスは、すべての文字列解析を無効にし、それに続く文字列をファイルシステムに直接送信するようにWindowsAPIに指示します。

ファイル、パス、名前空間の命名

も参照してください

5
phuclv