2010-12-22 26 views
0

我正在使用VS 2005(.net版本> 2.0+)來創建Windows應用程序。
在我的應用程序中,我給出了訪問文件的相對路徑。 該文件可能存在於任何已知文件夾(比如2個)images1,images2中,我需要檢查哪個文件路徑是正確的,哪個不是,使用一些條件和布爾變量。因此我需要在我的表單中指定並加載該圖像。正確/錯誤文件路徑的C#試驗和錯誤方法

我該怎麼做?

回答

1
foreach (string folder in folders) 
    if (File.Exist(folder + filename) 
    dosomething 
3

您正在尋找Path.CombineFile.Exists方法。

使用LINQ:

var actualPath = possiblePaths.Select(p => Path.Combine(p, relativePath)) 
           .FirstOrDefault(File.Exists); 
+0

LINQ在.Net 2.0中不可用? – Steven 2010-12-22 14:24:07

+0

你是對的;我錯過了那條線。你需要用`if`將它轉換爲`for`循環。 – SLaks 2010-12-22 14:24:55

0

我感覺到這是關係到C# How to derive the relative-filepath of file located in grand-parent folder? 請閱讀響應。

試錯方法將被證明是昂貴的

+0

是的..它是這個問題的續集。順便說一句..我怎樣才能處理調試/釋放模式..給相同的文件路徑(相對路徑)?所以得出的結論使用試驗和錯誤,如果我沒有得到正確的文件路徑第一次嘗試(假設我在調試文件夾中)我會去訪問父文件夾,並通過連續指向所需的文件:) – 2010-12-22 14:26:33

0

您可以檢查與System.IO.File.Exists文件(字符串路徑)方法的存在。如果有幫助,還有一個等效的System.IO.Directory.Exists(字符串路徑)。

ETA的自評如下:

================================== =====================================

Preprocessor directives也提供了一種方法,通過它代碼可以根據配置有條件編譯。例如這樣的事情會給你一個類型的行爲與「調試」構建和「釋放」(當然,任何非調試)不同類型的行爲的構建:

public void DoStuff() 
{ 

#if DEBUG 
    // The stuff in this block only happens for a DEBUG build 
#else 
    // The stuff in this block only happens for a non-debug build 
#endif 

}