检查路径是否为目录或文件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:'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 ;
}
请注意,在此过程中可能会抛出许多异常。