Domanda

So che lo fa in PHP e sono abbastanza sicuro che lo faccia in Java.Non ho utilizzato le ultime versioni di .NET, quindi non parlerò per loro.Sembra molto imbarazzante, ma mi chiedevo se ci fosse una ragione di fondo per questo.

È stato utile?

Soluzione

Uno dei motivi è la compatibilità: chiunque abbia eseguito il "controllo dell'esistenza" sa escludere le directory;cambiare quel comportamento può confondere coloro che fanno affidamento su quel comportamento.

In secondo luogo, il codice sottostante spesso verifica l'esistenza del sistema operativo in un catalogo di voci del filesystem: per il sistema operativo, una directory è uguale a un file.In altre parole, sta cercando una voce "xyz" nel catalogo e non un file con il nome "xyz" nel catalogo.

La compatibilità con le versioni precedenti è il motivo principale, sospetto.

Altri suggerimenti

C'è anche un motivo formale per cui una directory è un file:

I file (o collegamenti ai file) possono essere situati nelle directory.Tuttavia, più in generale, una directory può contenere un elenco di file o un elenco di collegamenti ai file.All'interno di questa definizione, è di fondamentale importanza che il termine "file" includa directory.Ciò consente l'esistenza di gerarchie di directory, cioè directory contenenti sottodirectory.

Da Wikipedia, 'File del computer'

È comune utilizzare una funzione "il file esiste" per controllare un percorso prima di scrivervi.In questo caso d'uso il tipo di file è irrilevante, se esiste una directory chiamata “/home/foo” non sarai in grado di creare un file chiamato “/home/foo”

Anche PHP, uno dei linguaggi che hai citato, fornisce diverse funzioni a seconda del tipo di file che ti interessa:

  • file_exists() restituirà TRUE per file, directory e collegamenti simbolici
  • is_file() restituirà TRUE per i file, ma FALSE per directory e collegamenti simbolici
  • is_dir() restituirà TRUE per le directory, ma FALSE per file e collegamenti simbolici
  • is_link() restituirà TRUE per i collegamenti simbolici, ma FALSE per file e directory

Parte della filosofia Unix è che "tutto è un file".Ciò ha influenzato in una certa misura anche altri ambienti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top