469,291 Members | 1,703 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,291 developers. It's quick & easy.

Good way of checking if file exists ?

is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?

Nov 14 '05 #1
15 113731
a standard C compatible way could be:

FILE *fp = fopen("file","r");
if( fp ) {
// exists
fclose(fp);
} else {
// doesnt exist
}


Geiregat Jonas wrote:
is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?

Nov 14 '05 #2
Robert Frunzke <Ro**************@freenet.de> scribbled the following:
a standard C compatible way could be: FILE *fp = fopen("file","r");
if( fp ) {
// exists
fclose(fp);
} else {
// doesnt exist
Doesn't exist, exists but isn't readable, exists but already has too
many locks, or other similar reasons.
}


It's impossible to check existence for certain in pure ISO standard C.

--
/-- Joona Palaste (pa*****@cc.helsinki.fi) ------------- Finland --------\
\-- http://www.helsinki.fi/~palaste --------------------- rules! --------/
"Parthenogenetic procreation in humans will result in the founding of a new
religion."
- John Nordberg
Nov 14 '05 #3
Geiregat Jonas <en***@sdf-eu.org> wrote:
is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?


I would recommend using 'fopen' instead to use a standard c function.

However, standard C doesn't provide any guaranteed way to determine
whether a file exists or not. fopen can fail even if a file does exist.

However, it is possible that it is a reasonable method for your system,
but that question could only be answered by people knowledgeable with
your specific system.

--
== Eric Gorr ========= http://www.ericgorr.net ========= ICQ:9293199 ===
"Therefore the considerations of the intelligent always include both
benefit and harm." - Sun Tzu
== Insults, like violence, are the last refuge of the incompetent... ===
Nov 14 '05 #4
Joona I Palaste wrote:
Robert Frunzke <Ro**************@freenet.de> scribbled the following:
a standard C compatible way could be:


FILE *fp = fopen("file","r");
if( fp ) {
// exists
fclose(fp);
} else {
// doesnt exist

Doesn't exist, exists but isn't readable, exists but already has too
many locks, or other similar reasons.

}

It's impossible to check existence for certain in pure ISO standard C.

Using the stat function would solve some probleme's because you don't
need any access rights. I think stat is the best way (I'm using linux).

Nov 14 '05 #5
Op Wed, 07 Jan 2004 22:35:17 +0000 schreef Geiregat Jonas
<en***@sdf-eu.org>:
Joona I Palaste wrote:
Robert Frunzke <Ro**************@freenet.de> scribbled the following:
a standard C compatible way could be:


FILE *fp = fopen("file","r");
if( fp ) {
// exists
fclose(fp);
} else {
// doesnt exist

Doesn't exist, exists but isn't readable, exists but already has too
many locks, or other similar reasons.

}

It's impossible to check existence for certain in pure ISO standard C.

Using the stat function would solve some probleme's because you don't
need any access rights. I think stat is the best way (I'm using linux).


access rights and stat are unknown to pure ISO standard C.

--
Coos
Nov 14 '05 #6
Geiregat Jonas <en***@sdf-eu.org> writes:
is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?


There's no really good portable way to determine whether a named file
exists; you'll probably have to resort to system-specific methods
(which you can ask about in another newsgroup).

Before you do, you should define more clearly what information you're
looking for and what you intend to do with it. On a multi-processing
system, for example, if your logic is something like this:

if (file exists) {
open existing file
}
else {
create new file
initialize new file
}

you should allow for the possibility that the file is created <OT>by
another process</OT> after you check for its existence and before you
attempt to create it.

Note also that if a file doesn't exist, that doesn't imply that you
have permission to create it.

In many cases, it may not be possible to determine whether a file
exists. On a system with user accounts and directories with
permission settings, an attempt to determine whether a file exists may
fail because you don't have permission to read the directory that may
or may not contain it.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://www.sdsc.edu/~kst>
Schroedinger does Shakespeare: "To be *and* not to be"
Nov 14 '05 #7
Geiregat Jonas <en***@sdf-eu.org> wrote in message news:<3f**********************@news.skynet.be>...
is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?


In my opinion, the best option is to use access() call instead of
open() call. In this case, the above given code will look like:

if (access("file", F_OK) == 0)
{
printf("Files does exists");
}
else
{
printf("File does not exist");
...
}

Regards,
- Rahul Agarkar
Nov 14 '05 #8
Rahul Agarkar <ra***********@hotmail.com> scribbled the following:
Geiregat Jonas <en***@sdf-eu.org> wrote in message news:<3f**********************@news.skynet.be>...
is using
if(open("file",O_EXCL) != -1){ printf("File does
exists")}else{printf("file does not exists"); }

a good way of checking if a file exists or not, if not how should I do it ?
In my opinion, the best option is to use access() call instead of
open() call. In this case, the above given code will look like: if (access("file", F_OK) == 0)
{
printf("Files does exists");
}
else
{
printf("File does not exist");
...
}


Neither access() or open() are ISO standard C functions. Whatever next,
will you be suggesting OpenFile() in <windows.h> or something?
(That function name might be wrong. I haven't actually *looked* at
<windows.h>.)

--
/-- Joona Palaste (pa*****@cc.helsinki.fi) ------------- Finland --------\
\-- http://www.helsinki.fi/~palaste --------------------- rules! --------/
"This isn't right. This isn't even wrong."
- Wolfgang Pauli
Nov 14 '05 #9
Rahul Agarkar wrote:
Geiregat Jonas <en***@sdf-eu.org> wrote in message
is using
if(open("file",O_EXCL) != -1)
printf("File does exists");
else
printf("file does not exists");

a good way of checking if a file exists or not, if not how
should I do it ?


In my opinion, the best option is to use access() call instead of
open() call. In this case, the above given code will look like:

if (access("file", F_OK) == 0)
printf("Files does exists");
else {
printf("File does not exist");
...
}


(slightly reformatted). open, access, O_EXCL and F_OK do not
exist in standard C, the subject of this newsgroup. Please do not
give off-topic answers here, where there may well be nobody to
correct any errors.

--
Chuck F (cb********@yahoo.com) (cb********@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
Nov 14 '05 #10
CBFalconer wrote:
Rahul Agarkar wrote:
Geiregat Jonas <en***@sdf-eu.org> wrote in message

is using
if(open("file",O_EXCL) != -1)
printf("File does exists");
else
printf("file does not exists");

a good way of checking if a file exists or not, if not how
should I do it ?


In my opinion, the best option is to use access() call instead of
open() call. In this case, the above given code will look like:

if (access("file", F_OK) == 0)
printf("Files does exists");
else {
printf("File does not exist");
...
}

(slightly reformatted). open, access, O_EXCL and F_OK do not
exist in standard C, the subject of this newsgroup. Please do not
give off-topic answers here, where there may well be nobody to
correct any errors.


Where could I find information what is Standard ISO C
and information about other standards ?
I'm using stat now.

Nov 14 '05 #11
Geiregat Jonas wrote:
CBFalconer wrote:
Rahul Agarkar wrote:
Geiregat Jonas <en***@sdf-eu.org> wrote in message
is using
if(open("file",O_EXCL) != -1)
printf("File does exists");
else
printf("file does not exists");

a good way of checking if a file exists or not, if not how
should I do it ?

In my opinion, the best option is to use access() call instead of
open() call. In this case, the above given code will look like:

if (access("file", F_OK) == 0)
printf("Files does exists");
else {
printf("File does not exist");
...
}


(slightly reformatted). open, access, O_EXCL and F_OK do not
exist in standard C, the subject of this newsgroup. Please do not
give off-topic answers here, where there may well be nobody to
correct any errors.


Where could I find information what is Standard ISO C
and information about other standards ?
I'm using stat now.


Try:
<http://www.dinkumware.com>
<http://std.dkuug.dk/jtc1/sc22/wg14/www/docs/n869/>

for the latter I advise downloading the text version for easy
searching, grepping, etc.

--
Chuck F (cb********@yahoo.com) (cb********@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
Nov 14 '05 #12
Geiregat Jonas wrote:
Where could I find information what is Standard ISO C
and information about other standards ?
I'm using stat now.


The obvious answer is, the ISO C Standard.


Brian Rodenborn
Nov 14 '05 #13
Default User wrote:
Geiregat Jonas wrote:

Where could I find information what is Standard ISO C
and information about other standards ?
I'm using stat now.

The obvious answer is, the ISO C Standard.


Brian Rodenborn


I think it was obvious that I knew that but was looking for the official
place to get it from.

Nov 14 '05 #14
Geiregat Jonas <en***@sdf-eu.org> wrote:
I think it was obvious that I knew that but was looking for the official
place to get it from.


I believe this is it:

Search for:

9899:1999

at

http://www.iso.ch

which should bring up this page:

http://tinyurl.com/3bpmj

which is what I believe you are looking for.
--
== Eric Gorr ========= http://www.ericgorr.net ========= ICQ:9293199 ===
"Therefore the considerations of the intelligent always include both
benefit and harm." - Sun Tzu
== Insults, like violence, are the last refuge of the incompetent... ===
Nov 14 '05 #15
Eric wrote:
Geiregat Jonas <en***@sdf-eu.org> wrote:

I think it was obvious that I knew that but was looking for the official
place to get it from.

I believe this is it:

Search for:

9899:1999

at

http://www.iso.ch

which should bring up this page:

http://tinyurl.com/3bpmj

which is what I believe you are looking for.


It should also be available from various national standards bodies, such
as ANSI in the US (which sells the downloadable PDF for $18, last I heard).

-Kevin
--
My email address is valid, but changes periodically.
To contact me please use the address from a recent posting.
Nov 14 '05 #16

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

6 posts views Thread by Alex Chan | last post: by
10 posts views Thread by Ricardo Luceac | last post: by
2 posts views Thread by PiotrKolodziej | last post: by
2 posts views Thread by =?Utf-8?B?R29yZG9u?= | last post: by
26 posts views Thread by Army1987 | last post: by
1 post views Thread by timexsinclair2068 | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by harlem98 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.