据我所知,无法判断丢弃是文件还是文件夹。
if(fi.Extension ==“”)是不够的,因为它匹配目录和没有扩展名的文件。
我发现的唯一方法是.GetFiles()并处理异常。
有更好的方法吗?
private void ListView0_DragDrop(object sender, DragEventArgs e)
{
// Can only drop files, so check
if (!e.Data.GetDataPresent(DataFormats.FileDrop))
{
return;
}
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
FileInfo fileInfo;
DirectoryInfo dirInfo;
foreach (string str in files)
{
dirInfo = new DirectoryInfo(str);
try
{
foreach(FileInfo fi in dirInfo.GetFiles())
{
Debug.WriteLine("File in dir " + fi.Name);
}
}
catch
{
fileInfo = new FileInfo(str);
Debug.WriteLine("File " + str);
}
}
答案 0 :(得分:1)
在添加try catch之前我会使用Directory.Exists和File.Exists - 尽管由于文件/目录的安全性,你可能还需要尝试(这两种Exists
方法都可以抛出FileIOException
。
DirectoryInfo dirInfo;
foreach (string str in files)
{
if (Directory.Exists(str))
{
dirInfo = new DirectoryInfo(str);
foreach(FileInfo fi in dirInfo.GetFiles())
{
Debug.WriteLine("File in dir " + fi.Name);
}
}
else if (File.Exists(str))
{
fileInfo = new FileInfo(str);
Debug.WriteLine("File " + str);
}
}