4

MSDNによると、次の文字をファイル名に含めることはできません。

以下を除いて、名前には現在のコードページの任意の文字を使用します。これには、Unicode文字と拡張文字セット(128〜255)の文字が含まれます。

◦次の予約文字:

  • <(未満)
  • >(より大きい)
  • :(結腸)
  • "(二重引用符)
  • /(スラッシュ)
  • \(バックスラッシュ)
  • |(垂直バーまたはパイプ)
  • ?(疑問符)
  • *(アスタリスク)

.netでは、ファイル名で許可されていない文字を見つけるためのAPIが提供されています

char[] invalidFileChars = Path.GetInvalidFileNameChars();

備考

このメソッドから返される配列には、ファイル名とディレクトリ名で無効な文字の完全なセットが含まれているとは限りません。無効な文字の完全なセットは、ファイルシステムによって異なる場合があります。たとえば、Windowsベースのデスクトッププラットフォームでは、無効なパス文字には、ASCII / Unicode文字1〜31、引用符( ")、より小さい(<)、より大きい(>)、パイプ(|)、バックスペース( \ b)、null(\ 0)およびタブ(\ t)。

しかし、備考欄ではファイルシステムに依存すると言われています。

XPやWindows7などのWindowsベースのOSにこのAPIを使用しても安全ですか?

4

2 に答える 2

3

はい、ASCII ベースのファイル システム Path.GetInvalidFileNameChars() では、安全なファイル名が保証されます。ここで ASCII チャートを確認すると、左側の列のすべてが除外され、残りの列の特定の文字も除外されていることがわかります。除外されるものの完全なリストについては、返された配列の各文字の 10 進数表現を確認してください。

于 2012-07-30T12:12:50.410 に答える
0

最初の部分は、言語自体で禁止されている文字を指定することです。ただし、クラスは (ほとんどのプラットフォームで) 特定の名前のファイルからロードされるため、基盤となるプラットフォームでは、ファイルシステムによって追加の制限が課される場合があります。Java でも同じことが当てはまりますが、技術的にはカスタム クラスローダーを使用することで回避できます。

于 2012-07-30T12:12:35.157 に答える