[fpc-pascal] FileExists inconsistency

Daniël Mantione daniel.mantione at freepascal.org
Wed Jan 3 16:46:10 CET 2007



Op Wed, 3 Jan 2007, schreef Henry Vermaak:

> > There is no getting away that Dos filesystem handling is different
> > from Unix file handling. On Dos like platforms, a filename with
> > a same name as a subdirectory can exist in the same directory. In other
> > words, it should return false.
> > 
> 
> I cannot create a file with the same name as a subdir under Windows XP
> on ntfs or fat32...
> 
> > On the other hand, in Unix, it should return true because otherwise code
> > like:
> > 
> > if not fileexists('abcd') then
> > begin
> > assign(f,'abcd');
> > rewrite(f);
> > end;
> > 
> > ... becomes unreliable.
> > 
> 
> ...so that means that this code will also be unreliable on windows.
> In short: the 2 file systems are consistent with their behaviour in
> this respect, but the FileExists is not.
> 
> Maybe there's something I'm missing?

No, because in a Dos like filesystem, a direcory abcd will still allow a 
file abcd to be created. In other words, fileexists returns false so the 
file can be created.

In a Unix like filesystem, a directory abcd will prevent a file abcd to be 
created, so fileexists returns true.

In short, in Dos filesystems, directories are not considered files. In 
Unix filesystems they are considered files.

Daniël


More information about the fpc-pascal mailing list