2016-05-23 42 views
2

我必須回來路徑中的5個文件夾,然後我需要進一步輸入3個文件夾並檢查文件是否存在。立即在路徑C中前後導航

讓我們想象兩個路徑:

1) C:\a\b\c\d\e\f\g\ 

2) C:\a\2\3\4\5\test.xml 

然後我的程序,現在是第一個路徑上。 我需要檢查文件test.xml(第二個路徑)是否存在。

爲此,我知道方法File.Exists(路徑),但是我有問題的路徑。 我能夠回來直到文件夾a並檢查文件是否存在。 例如,以檢查路徑上的文件存在:

3) C:\a\test2.xml 

我可以使用:

File.Exists(@".\.\.\.\.\.\" + @"test2.xml"); 

但無論如何我嘗試導航到第二路徑(2)),並檢查該文件存在我不能那樣。有人可以幫我嗎?提前致謝。問候。

+0

能否請你告訴你做了什麼一些代碼?有點不清楚你的問題到底是什麼。您可能正在尋找['Path.GetDirectoryName()'](https://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname%28v=vs.110%29.aspx) –

+0

實際上這個過程沒有任何代碼。如果文件存在,我想使if()被輸入 –

回答

2

。指當前目錄 ..指當前

在您的例子以上的目錄一層:

..\..\..\..\..\..\2\3\4\5\test.xml 

此向上移動到一個目錄然後遍歷至5,其中的文件駐留。

東西可能會有所幫助測試你的路徑,並確保你在哪裏,你覺得你是這樣的:

string currentPath = Path.GetFullPath(relativePath); 

再檢查currentPath的價值,如果它捲起的地方你沒有想到你可以調試你的路徑遍歷而不是你的代碼。

+0

現在,我已經與Path.Combine和Path.GetFullName方法調試此感謝您的時間和問候:) –

2

您只需要使用..來表示父目錄。

嘗試:

File.Exists(@"..\..\..\..\..\..\" + @"test2.xml"); 
+0

使用立即窗口: File.Exists(Path.Combine(@「.. \ .. \ .. \ .. \ ..」+ @「\ CoreCalc.dll「)); 給我錯誤,而File.Exists(Path.Combine(@「。\。。\ \ \」 + @ 「\ CoreCalc.dll」));給了我真正的 無論如何謝謝你的答覆:) –

+0

@jankowalski:看什麼'Path.Combine'回報你其實只是。越來越'\ CoreCalc.dll'。 – SLaks

+0

該代碼將使用可執行文件在運行目錄下找到的路徑。您可能需要承擔其在斌/調試運行,這樣上去了額外的兩個目錄。 –

0

我仍然不能因聲譽有關的問題發表意見,但我相信你的問題是兩者之一:

  1. 要麼前往C:\a\b\c\d\e\f\g\test2.xml,在這種情況下,你可能想使用Path.Combine("C:\a\", "\2\3\4\5\", "test2.xml")
  2. 要麼移動升後降,那麼這將是

    DirectoryInfo dinfo = new DirectoryInfo(path); 
    if (dinfo.Exists){ 
        for (int i = 0; i<5; i++){ 
         dinfo = dinfo.Parent; 
        } 
        if(File.Exists(Path.Combine(dinfo.FullName, "test2.xml")){ 
         // do something 
        } 
    }