In my application I use the WebClient class to download files from a Webserver by simply calling the DownloadFile method. Now I need to check whether a certain file exists prior to downloading it (or in case I just want to make sure that it exists). I've got two questions with that:
Thanks in advance!
access() Function to Check if a File Exists in C Another way to check if the file exists is to use the access() function. The unistd. h header file has a function access to check if the file exists or not. We can use R_OK for reading permission, W_OK for write permission and X_OK to execute permission.
The isDir() function is used to check a given file is a directory or not.
To check if a file exists, you pass the file path to the exists() function from the os. path standard library. If the file exists, the exists() function returns True . Otherwise, it returns False .
isdir() Method to check if file exists. os. path. isdir() method in Python is used to check whether the specified path is an existing directory or not.
WebClient is fairly limited; if you switch to using WebRequest, then you gain the ability to send an HTTP HEAD request. When you issue the request, you should either get an error (if the file is missing), or a WebResponse with a valid ContentLength property.
Edit: Example code:
WebRequest request = WebRequest.Create(new Uri("http://www.example.com/")); request.Method = "HEAD"; using(WebResponse response = request.GetResponse()) { Console.WriteLine("{0} {1}", response.ContentLength, response.ContentType); }
When you request file using the WebClient Class, the 404 Error (File Not Found) will lead to an exception. Best way is to handle that exception and use a flag which can be set to see if the file exists or not.
The example code goes as follows:
System.Net.HttpWebRequest request = null; System.Net.HttpWebResponse response = null; request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("www.example.com/somepath"); request.Timeout = 30000; try { response = (System.Net.HttpWebResponse)request.GetResponse(); flag = 1; } catch { flag = -1; } if (flag==1) { Console.WriteLine("File Found!!!"); } else { Console.WriteLine("File Not Found!!!"); } You can put your code in respective if blocks. Hope it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With