简体   繁体   中英

File.Delete Not Deleting the File

I am trying to delete a file, but the following code doesn't do that. It doesn't throw an exception, but the file is still there. Is that possible?

try
{
    File.Delete(@"C:\File.txt");
} 
catch(Exception e)
{
    Console.WriteLine(e);
}

If the file can't be deleted, the exception should print out, but it doesn't. Should this fail silently (as in the File.Delete method is swallowing any errors)?

File.Delete does not throw an exception if the specified file does not exist. [Some previous versions of the MSDN documentation incorrectly stated that it did].

try 
{ 
    string filename = @"C:\File.txt";
    if (File.Exists(filename))
    { 
        File.Delete(filename);
    }
    else
    {
        Debug.WriteLine("File does not exist.");
    } 
}  
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 

Check to see that the file's path is correct. An exception will not be thrown if the file does not exist. One common mistake is to confuse a file named File.txt with one named File.txt.txt if "Hide extensions for known file types" is set in Windows.

Are you sure the file name is correct? The only time it doesn't throw an error is if the file doesn't exist. Stupid question, but do you by any chance have a typo in the file name? Or an error in the path?

Another possibility is that the file is still in use by some background process. Then it does not fail but it does not delete the file.

Another example could be that the delete request is in a kind of queued state. For example when the file has been locked because it has not yet been closed after being edited by another process. If that is the case you can alter that process to close the file properly or kill the process and the file disappears.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM