检查文件是否存在后如何删除文件

时间:2011-06-17 20:54:35

标签: c# .net windows

如何删除C#中的文件,例如C:\test.txt,虽然应用了与批处理文件相同的方法,例如

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)

10 个答案:

答案 0 :(得分:352)

使用File类非常简单。

if(File.Exists(@"C:\test.txt"))
{
    File.Delete(@"C:\test.txt");
}

<小时/> 正如Chris在评论中指出的那样,您实际上不需要进行File.Exists检查,因为如果文件不存在,File.Delete不会抛出异常,尽管如果您要使用绝对路径,您需要检查以确保整个文件路径有效。

答案 1 :(得分:89)

像这样使用System.IO.File.Delete

System.IO.File.Delete(@"C:\test.txt")

来自文档:

  

如果要删除的文件不存在,则不会抛出任何异常。

答案 2 :(得分:31)

if (System.IO.File.Exists(@"C:\test.txt"))
    System.IO.File.Delete(@"C:\test.txt"));

System.IO.File.Delete(@"C:\test.txt");
只要文件夹存在,

就会一样。

答案 3 :(得分:28)

您可以使用以下命令导入System.IO命名空间:

using System.IO;

如果文件路径代表文件的完整路径,您可以检查其存在并将其删除,如下所示:

if(File.Exists(filepath))
{
     try
    {
         File.Delete(filepath);
    } 
    catch(Exception ex)
    {
      //Do something
    } 
}  

答案 4 :(得分:20)

如果要避免使用DirectoryNotFoundException,则需要确保文件目录确实存在。 File.Exists完成了这一点。另一种方法是使用PathDirectory实用程序类,如下所示:

string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
    File.Delete(file);
}

答案 5 :(得分:15)

  if (System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
    {
        // Use a try block to catch IOExceptions, to 
        // handle the case of the file already being 
        // opened by another process. 
        try
        {
            System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
            return;
        }
    }

答案 6 :(得分:9)

if (File.Exists(path))
{
    File.Delete(path);
}

答案 7 :(得分:1)

如果您使用FileStream从该文件读取然后想要删除它,请确保在调用File.Delete(path)之前关闭FileStream。我有这个问题。

var markersID = {};

var geoJsonLayer = L.geoJson(individualPoints, {
  onEachFeature: function(feature, layer) {
    // make a marker with that number
    // actually no need to duplicate the marker.
    //markersID[feature.properties.id] = L.marker(switchLatLong(feature.geometry.coordinates));
    markersID[feature.properties.id] = layer;
  }
});

markers.addLayer(geoJsonLayer); // this works
map.addLayer(markers);

// This will work, you just need to get the appropriate `id`.
markers.removeLayer(markersID[id]);

答案 8 :(得分:1)

有时您想要删除文件(无论发生什么异常,请删除该文件)。对于这种情况。

public static void DeleteFile(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }

            bool isDeleted = false;
            while (!isDeleted)
            {
                try
                {
                    File.Delete(path);
                    isDeleted = true;
                }
                catch (Exception e)
                {
                }
                Thread.Sleep(50);
            }
        }

注意:如果指定的文件不存在,则不会抛出异常。

答案 9 :(得分:-1)

这将是最简单的方法,

if (System.IO.File.Exists(filePath)) 
{
  System.IO.File.Delete(filePath);
  System.Threading.Thread.Sleep(20);
}

Thread.sleep将有助于完美地工作,否则,如果我们复制或写入文件,它将影响下一步。