1

私はそれが PHP でもできることを知っていますし、Java でもできると確信しています。私は最新バージョンの .NET を使用したことがないので、それらについては説明しません。非常に厄介なように思えますが、これには根本的な理由があるのではないかと考えていました。

4

4 に答える 4

3

理由の 1 つは互換性です。「存在の確認」を行った人は、ディレクトリを除外することを知っています。その行動を変えることは、その行動に頼っている人を混乱させるかもしれません。

第 2 に、基礎となるコードは、多くの場合、オペレーティング システムでファイル システム エントリのカタログに存在するかどうかをチェックします。OS にとって、ディレクトリはファイルと同じです。つまり、カタログ内の「xyz」という名前のファイルではなく、カタログ内の「xyz」のエントリを探しています。

下位互換性が主な理由だと思います。

于 2008-09-08T16:59:51.947 に答える
2
于 2008-09-08T17:08:02.287 に答える
1

「ファイルが存在する」関数を使用して、パスに書き込む前にパスをチェックするのが一般的です。この使用例では、ファイルのタイプは関係ありません。「/home/foo」というディレクトリがある場合、「/home/foo」というファイルを作成することはできません</p>

また、あなたが言及した言語の1つであるPHPは、関心のあるファイルの種類に応じていくつかの機能を提供します。

  • file_exists()ファイル、ディレクトリ、およびシンボリック リンクに対して TRUE を返します。
  • is_file()ファイルの場合はTRUEを返しますが、ディレクトリとシンボリックリンクの場合はFALSEを返します
  • is_dir()ディレクトリに対してTRUEを返しますが、ファイルとシンボリックリンクに対してFALSEを返します
  • is_link()シンボリック リンクの場合は TRUE を返しますが、ファイルとディレクトリの場合は FALSE を返します。
于 2008-09-08T17:06:29.340 に答える
0

Unix の哲学の一部は、「すべてはファイルである」というものです。これは、他の環境にもある程度影響を与えています。

于 2012-02-22T00:49:46.727 に答える