C# 给定一个路径,如何确定它是目录还是文件
我需要复制目录中的文件和目录。假设只有一个级别 有一个目录C:\AAAA,其中包含5个没有其他子目录和7个文件的其他目录子目录 当我打电话时:C# 给定一个路径,如何确定它是目录还是文件,c#,C#,我需要复制目录中的文件和目录。假设只有一个级别 有一个目录C:\AAAA,其中包含5个没有其他子目录和7个文件的其他目录子目录 当我打电话时: System.IO.Directory.GetFileSystemEntries("C:\\AAAA"); 返回一个字符串数组。它将包含按口述排序顺序排序的条目。因此,当我为每个循环调用 foreach(string path in System.IO.Directory.GetFileSystemEntries("C:\\AAAA")) {
System.IO.Directory.GetFileSystemEntries("C:\\AAAA");
返回一个字符串数组。它将包含按口述排序顺序排序的条目。因此,当我为每个循环调用
foreach(string path in System.IO.Directory.GetFileSystemEntries("C:\\AAAA"))
{
//how to determine path is dictonay or file??
}
因此,从System.IO.Directory.GetFileSystemEntriesC:\AAAA返回的数组中,如何确定给定路径是文件路径还是目录?使用Directory.Exists或file.Exists检查。使用Directory.Exists或file.Exists检查您可以尝试:
或:
也获取这些属性。您可以尝试:
或:
也获取这些属性。这应该可以做到:
System.IO.Directory.GetFileSystemEntries("C:\\Temp");
foreach (string path in System.IO.Directory.GetFileSystemEntries("C:\\Temp"))
{
if (File.Exists(path))
{
Console.WriteLine("im a file");
}
else
{
Console.WriteLine("im a folder");
}
}
这应该做到:
System.IO.Directory.GetFileSystemEntries("C:\\Temp");
foreach (string path in System.IO.Directory.GetFileSystemEntries("C:\\Temp"))
{
if (File.Exists(path))
{
Console.WriteLine("im a file");
}
else
{
Console.WriteLine("im a folder");
}
}
您可以使用Directory.Exists/File.Exists,也可以直接使用
Directory.GetFiles();
Directory.GetDirectories();
MSDN:
您可以使用Directory.Exists/File.Exists,也可以直接使用
Directory.GetFiles();
Directory.GetDirectories();
MSDN:
您可以使用FileAttributes发现字符串是否表示文件或目录
foreach(string currentName in Directory.GetFileSystemEntries("C:\\AAAA"))
{
FileAttributes att = File.GetAttributes(currentName);
if((att & FileAttributes.Directory) == FileAttributes.Directory)
// is a directory
else
// is a file
}
与File.Exist或Directory.Exist相比,使用FileAttributes只有一个缺点。
如果文件或目录不存在,它将抛出异常,但是根据上面的代码,在这种情况下发生异常的可能性很小,并且file.GetAttributes的速度非常快 您可以使用FileAttributes发现字符串是否表示文件或目录
foreach(string currentName in Directory.GetFileSystemEntries("C:\\AAAA"))
{
FileAttributes att = File.GetAttributes(currentName);
if((att & FileAttributes.Directory) == FileAttributes.Directory)
// is a directory
else
// is a file
}
与File.Exist或Directory.Exist相比,使用FileAttributes只有一个缺点。
如果文件或目录不存在,它将抛出异常,但是根据上面的代码,在这种情况下发生异常的可能性很小,并且file.GetAttributes的速度非常快 如果您需要以不同的方式对待文件和目录,我建议您使用GetDirectories和GetFiles分别获取它们,并根据需要进行处理。这样你就能提前知道他们在做什么 我认为这对于您描述的内容会更好,因为您可以循环所有文件并复制它们,然后循环所有目录并递归调用副本
是的,我知道这实际上并没有回答问题,但我认为它回答了如何做X的精神:如果您需要以不同的方式对待文件和目录,我建议使用GetDirectory和GetFile分别获取它们,并酌情处理它们。这样你就能提前知道他们在做什么 我认为这对于您描述的内容会更好,因为您可以循环所有文件并复制它们,然后循环所有目录并递归调用副本
是的,我知道这实际上并没有回答问题,但我认为它回答了如何做X的精神:这是一件非常糟糕的事情,为什么要得到所有的文件而不仅仅是支票?这是一件非常糟糕的事情,为什么要得到所有的文件而不仅仅是支票?