-1

我的方法获取字符串数组作为参数,它代表我的程序必须删除的文件和目录的路径。在 foreach 循环中,我不知道字符串是否表示文件或目录的路径,所以我不知道应该使用 File.Delete() 还是 Directory.Delete。

我创造了这样的东西,但我认为它可以做得更好:)

foreach (string path in deleteItems)
        {
            try
            {
                Directory.Delete(path, true);
            }   
            catch (IOException)
            {
                try { File.Delete(path); }
                catch (IOException e) { Console.WriteLine(e); }
            }
        }

有人知道如何更好地执行此代码吗?

编辑:或者我认为它可能会更好

            if(File.Exists(path))
            {
                File.Delete(path);
                continue;
            }
            if(Directory.Exists(path))
            {
                Directory.Delete(path);
                continue;
            }
4

3 回答 3

1

本答案所述,您应该检查FileAttributes

foreach (string path in deleteItems)
{
    FileAttributes attr = File.GetAttributes(@"c:\Temp");
    //detect whether its a directory or file
    if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
        Directory.Delete(path, true);
    else
        File.Delete(path);
}

(为了更好的可读性省略了异常处理)

于 2013-06-26T14:15:11.163 回答
1

如果要查看字符串是文件还是目录,简单检查一下是否是两者之一使用;

foreach (string path in deleteItems)
{
  if(File.Exists(path)){
    File.Delete(path);
  }elseif(Directory.Exists(path)){
    Directory.Delete(path);
  }
}
于 2013-06-26T14:08:25.650 回答
0

为什么不使用 Directory.Exists(path) 例如

if(Directory.Exists(path))

   Directory.Delete(path);

else

   File.Delete(path);
于 2013-06-26T14:16:20.693 回答