2012-08-17 79 views
0

有些人和我有相同的文件夾存儲在我們的C驅動器,但每個都在不同的位置。我試圖編寫可以在每臺機器上訪問該文件夾的代碼。我試過"~/xx/xx",但它不起作用。我應該怎麼做?如何找到一個目錄的路徑

更新: 這是我現在有:

foreach (var dir in Directory.EnumerateDirectories(@"C:\", "*dataDir*", SearchOption.AllDirectories)) 
{ 
    Debug.WriteLine(dir); 
} 

例外:System.UnauthorizedAccessException: Access to the path 'C:\$INPLACE.~TR\' is denied.

+0

它可能更容易只是爲了讓存儲的,每個人都有在文件夾列表,或者只是文件夾存儲同一個地方。 – FishBasketGordo 2012-08-17 17:52:27

+0

你可能會解釋更多...給我們一個例子 – 2012-08-17 17:52:37

+2

*「在同一個文件夾在不同的位置」* - 然後它是一個不同的文件夾。您必須向我們提供有關文件夾結構的更多信息,機器之間的共同點以及您如何實際訪問它們。一般而言,您的軟件應該使用相對路徑,以便它可以在任何子文件夾中運行,前提是應用程序的文件夾結構保持不變。 – David 2012-08-17 17:52:38

回答

2

Directory.EnumerateDirectories應該工作。如果您只希望進行一場比賽,您可以做.Single()

foreach(var dir in Directory.EnumerateDirectories(@"C:\", "*STUFF*", SearchOption.AllDirectories)) 
{ 
    Console.WriteLine(dir); 
} 
 
Yields: 
C:\STUFF 
C:\other\STUFF 

+0

當我嘗試上面的代碼時,我一直跑到我無法訪問的目錄中。如何解決這個問題?知道我正在查找的文件夾路徑的一部分('\ aa \ bb \ STUFF')有幫助嗎?這部分路徑在每臺機器上都是一樣的。 – user1486691 2012-08-17 19:01:39

+0

@ user1486691:這是爲您無權訪問的目錄拋出異常,或者您只是無法訪問它返回的內容? – 2012-08-17 19:16:41

+0

用於我無權訪問的目錄。 – user1486691 2012-08-17 19:44:17

0

你可以嘗試在Directory.GetDirectories Method (String, String)

using System; 
using System.IO; 

public class Test 
{ 
    public static void Main() 
    { 
     try 
     { 
      // Only get subdirectories that begin with the letter "p." 
      string[] dirs = Directory.GetDirectories(@"c:\", "p*"); 
      Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length); 
      foreach (string dir in dirs) 
      { 
       Console.WriteLine(dir); 
      } 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("The process failed: {0}", e.ToString()); 
     } 
    } 

這個例子}