prim_file:exists/{1,2} a new lightweight file existence check

Blaine Whittle <>
Fri Oct 8 01:52:49 CEST 2010


This function is meant to be faster / simpler check for the existence
of a file or directory.  Most all erlang functions that do this end
up calling prim_file:read_file_info at some point.   When
read_file_info is used as a simple existence check, time is wasted
collecting file stats data only to turn around and throw the data
away.  If a file exists, read_file_info can take three times longer
to return than when the file doesn't exist.  Return values are true,
false, or {error, eisdir}.  The low level implementation of this
function was already defined via efile_may_openfile, this patch just
exposes it to prim_file.  filelib:is_dir/1, filelib:is_file/1,
filelib:is_regular/1 could be changed from calling read_file_info to
prim_file:exists or better yet to calling to a yet unwritten
file:exists function.

Patch located at
git fetch git://github.com/bwhittle/otp.git efile_exists

Note that I mapped the API function to 33 instead of 32.   This is just
for my own convenience as I use the raw_copy patch which currently
defines raw_copy at 32.   If the raw_copy patch submission doesn't
work out, the FILE_EXISTS macro can be easily refactored from 33 to
32 by changing efile_drv.c and prim_file.erl.



More information about the erlang-patches mailing list