我正在使用VS 2005(.net版本> 2.0+)來創建Windows應用程序。
在我的應用程序中,我給出了訪問文件的相對路徑。 該文件可能存在於任何已知文件夾(比如2個)images1,images2中,我需要檢查哪個文件路徑是正確的,哪個不是,使用一些條件和布爾變量。因此我需要在我的表單中指定並加載該圖像。正確/錯誤文件路徑的C#試驗和錯誤方法
我該怎麼做?
我正在使用VS 2005(.net版本> 2.0+)來創建Windows應用程序。
在我的應用程序中,我給出了訪問文件的相對路徑。 該文件可能存在於任何已知文件夾(比如2個)images1,images2中,我需要檢查哪個文件路徑是正確的,哪個不是,使用一些條件和布爾變量。因此我需要在我的表單中指定並加載該圖像。正確/錯誤文件路徑的C#試驗和錯誤方法
我該怎麼做?
foreach (string folder in folders)
if (File.Exist(folder + filename)
dosomething
您正在尋找Path.Combine
和File.Exists
方法。
使用LINQ:
var actualPath = possiblePaths.Select(p => Path.Combine(p, relativePath))
.FirstOrDefault(File.Exists);
我感覺到這是關係到C# How to derive the relative-filepath of file located in grand-parent folder? 請閱讀響應。
試錯方法將被證明是昂貴的
是的..它是這個問題的續集。順便說一句..我怎樣才能處理調試/釋放模式..給相同的文件路徑(相對路徑)?所以得出的結論使用試驗和錯誤,如果我沒有得到正確的文件路徑第一次嘗試(假設我在調試文件夾中)我會去訪問父文件夾,並通過連續指向所需的文件:) – 2010-12-22 14:26:33
您可以檢查與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
}
簡單使用System.IO.File.Exists,在其中爲它提供路徑和文件名,如果它返回true,則該文件在那裏。
您可能需要使用File.Exists()
。與Directory.Exists()
一起使用,您可以遍歷文件系統並從相應的位置加載相應的文件
LINQ在.Net 2.0中不可用? – Steven 2010-12-22 14:24:07
你是對的;我錯過了那條線。你需要用`if`將它轉換爲`for`循環。 – SLaks 2010-12-22 14:24:55