2012-10-23 142 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