检查路径是否为目录或文件c#

本文关键字:文件 路径 是否 检查 | 更新日期: 2023-09-27 18:03:48

我试图检查删除的目录或文件的路径是否为目录或文件的路径。我找到了这个代码:

FileAttributes attr = File.GetAttributes(@"C:'Example");
if (attr.HasFlag(FileAttributes.Directory))
    MessageBox.Show("It's a directory");
else
    MessageBox.Show("It's a file");

但是此代码不能用于已删除的目录或文件。

我有两个文件夹

C:'Dir1
C:'Dir2

在Dir1中有正常的文件,如"test.txt",在Dir2中有压缩文件,如"test.rar"或"test.zip",当Dir1中的文件被删除时,我需要删除Dir2中的文件。

我试过了,但是没有用。

这有可能实现吗?

谢谢!

检查路径是否为目录或文件c#

如果路径所表示的对象不存在或已从文件系统中删除,则您所得到的只是一个表示文件系统路径的字符串:它不是任何东西。

表示路径是一个目录(而不是文件)的常规约定是用目录分隔符结束它,因此

c:'foo'bar'baz'bat

表示文件,而

表示文件
c:'foo'bar'baz'bat'

表示目录。

如果您想要删除一个文件系统条目(文件或目录,递归地删除其内容和子目录),下面的内容应该足够了:

public void DeleteFileOrDirectory( string path )
{
  try
  {
    File.Delete( path ) ;
  }
  catch ( UnauthorizedAccessException )
  {
    // If we get here,
    // - the caller lacks the required permissions, or
    // - the file has its read-only attribute set, or
    // - the file is a directory.
    //
    // Either way: intentionally swallow the exception and continue.
  }
  try
  {
    Directory.Delete( path , true ) ;
  }
  catch ( DirectoryNotFoundException )
  {
    // If we get here,
    // - path does not exist or could not be found
    // - path refers to a file instead of a directory
    // - the path is invalid (e.g., on an unmapped drive or the like)
    //
    // Either way: intentationally swallow the exception and continue
  }
  return ;
}

请注意,在此过程中可能会抛出许多异常。