このウィキペディアのページによると、Windows API は「/」を「\」と同等に扱います。そのため、(たとえば)File
オブジェクトのパス名コンポーネントに何とか '/' を埋め込むことができたとしても、ある時点で Windows がそれをパス区切り文字として扱う可能性があります。
したがって、最良のオプションは次のとおりです。
- Windows が「/」を通常どおりに処理できるようにします。つまり、文字をパス名の区切り記号として扱うようにします。
- 上記と同様ですが、「/」についてユーザーに警告します。
- '/' と '\' の文字をチェックし、ファイル名 (つまり、パス名の構成要素) にパス名の区切り文字を含めることはできないという理由で両方を拒否します。
(最善の方法は、アプリケーションの詳細に依存します。たとえば、偽のファイル名を入力した人に問題を報告できるかどうかなどです。)
「/」を「\」とは異なる方法で処理しようとすると、解決するよりも多くの問題が発生するリスクがあります。たとえば、アプリケーションをスクリプト化する必要がある場合。黙って一方または両方の文字を取り除く (またはそれらを別のものに変える) と、さらに問題が発生するリスクがあります。たとえば、予期しないパス名の衝突。
(最初はFile(URL)
、% エスケープされた「/」文字を含む「file:」URL でコンストラクターを使用することを提案しました。しかし、それが Java 側で機能したとしても、Windows 側では機能しません。)