2012-10-23 143 views
0

我正在寻找一种方法来查找共享特殊文件夹(虚拟文件夹)中的所有文件。 例如,Desktop是一个共享文件夹,所有用户都有一个公开Desktop,私人Desktop。通过使用文件资源管理器导航到Desktop,您将看到两个桌面的内容合并在一起。查找共享特殊文件夹(虚拟文件夹)中的所有文件


例子:

所有共享文件夹:

dir C:\Users\usera\Desktop 
Testfile3 
Testfile4 

现在我想摆脱Testfile1的所有文件,直到Testfile4

当前用户
dir C:\Users\Public\Desktop 
Testfile1 
Testfile2 

文件夹循环槽C:\Users\usera\Desktop

有人有线索如何获得合并在一起的两个目录的文件列表? 不仅对于桌面,还有其他文件夹的行为方式相同。


伪代码:

arrayDesktop = FunctionThatGetsAllFilesFrom(@"C:\Usera\Desktop"); 
foreach (var file in arrayDesktop) 
{ 
    Console.WriteLine(file); 
} 

这个现在应该打印出来

Testfile1 
Testfile2 
Testfile3 
Testfile4 
+0

作为参考,这些类型的文件夹的正式名称为[虚拟文件夹(http://en.wikipedia.org/wiki/Special_folder#Virtual_folders)。不要与(相同名称!)[虚拟文件夹](http://en.wikipedia.org/wiki/Virtual_folder#Windows) –

回答

-1

他们是在文件系统上的单独文件夹。 Windows只是将它们结合起来显示在桌面上。您将不得不从两个文件夹中获取所有文件,并将它们合并到一个列表中。

您可以使用Directory.GetFiles获取给定文件夹中的文件列表。

从这两个文件夹中获得文件后,可以将它们与Linq Concat扩展方法结合使用。

+0

混淆我知道这些是两个独立的文件夹,事情是,不仅有桌面共享,还有其他文件夹。我不想全部检查。我想知道是否有一种方法可以为我“合并”。 – Eun

0

使用Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)分别拿到桌面上和公众一个文件。

对于其他虚拟文件夹,您可以查看documentation。但是你仍然必须自己合并所有文件。

+0

正如我之前所说,我不想只有桌面,我也想另一个'VirtualFolders' – Eun

+0

您可以在文档中找到其他虚拟文件夹。我编辑了我的答案以反映这一点。 – Chrono

0

这不是测试代码,所以原谅任何错误,但它应该足以让你开始。

foreach (string dir in Directory.GetDirectories(@"c:\Users")) 
{ 
    string fullDir = Path.Combine(dir, "Desktop"); 

    if (Directory.Exists(fullDir)) 
    { 
     foreach (string file in Directory.GetFiles(fullDir)) 
     { 
      Console.WriteLine(file); 
     } 
    } 
} 

除非您以管理员身份运行此操作,否则可能会遇到安全问题,即无法读取目录。在这种情况下,您将需要System.Net.NetworkCredential对象并将管理员帐户存储在本地缓存中 - 像这样。

NetworkCredential credential = new NetworkCredential(username, password, domain); 
CredentialCache credentialCache = new CredentialCache(); 
credentialCache.Add(new Uri(@"\\computer-uri"), "Basic", credential); 
+0

这与问题不符。您的代码仅适用于桌面。 – Eun

+0

@Eun看来其他人也犯了同样的“错误”,你的问题很混乱。也许如果你提供了某种伪代码来告诉我们你在找什么? –

+0

检查第一篇文章,谢谢 – Eun