2016-12-12 84 views
1

我正在編寫一個強烈依賴於目錄的程序(它是一個簡單的遊戲地圖生成器)。實際選擇文件之前從C#中的文本文件中讀取

的事情是,拍圖前你必須選擇一個模板,你會工作。這是通過在「模板」目錄中獲取一個目錄列表完成的,並將它們轉換爲一個稍後傳送到ComboBox的數組。然後,如果在文件夾中我們得到一個特定的文件,它將被加載,並將其中的值放入文本框中。

讓我們說的那樣:「程序\模板\ SelectedTemplate \ configfile.txt」

可悲的是,因爲該列表默認爲空,當我試圖編譯程序,它給了我一個「DirectoryNotFoundException」 ,因爲他正在尋找不存在,就像一個目錄:

「程序\模板\ configfile.txt」

我試圖阻止它通過選擇這肯定存在一個默認值,甚至被首先檢查該文件是否存在於該函數中。這根本沒有幫助。

任何建議如何解決它?如何防止「DirectoryNotFoundException」崩潰應用程序,而它發生在尚未加載的函數中?

+3

請張貼一些代碼 –

+1

如果你的問題是在編譯或運行時崩潰,我不明白.., – Yitzchak

+0

我不明白的問題,你所描述的方式。請輸入密碼?你有沒有試過'抓住DirectoryNotFoundException? –

回答

0

目前尚不清楚你想要做什麼。程序在編譯時會產生錯誤是毫無意義的。當你運行它時,我認爲你的意思是。

如果您發佈相關的代碼塊這也將幫助。 你如何檢查文件的存在?如果文件的路徑包含目前還不存在的目錄名,則有意義的是將引發異常。

你總是可以包裝在try/catch塊你的代碼,並測試該錯誤的,這樣一來你的應用程序不會崩潰。

0

請在目錄中的檢查和創建它,如果它不存在。然後創建一個空白文件作爲佔位符,直到稍後。

if (!File.Exists(@"Program\Templates\SelectedTemplate\")) 
{ 
    Directory.CreateDirectory(@"Program\Templates\SelectedTemplate\"); 

    if (!File.Exists(@"Program\Templates\SelectedTemplate\configfile.txt")) 
    { 
     using (File.Create(@"Program\Templates\SelectedTemplate\configfile.txt")) ; 
    } 
} 

或者接近的東西應該擺脫你的錯誤。

0

你可以使用Directory.Exists ("Program\Templates\SelectedTemplate\")檢查目錄是否存在,並添加一些用戶界面爲用戶創建一個目錄,甚至內部的一個新的模板。

或者如果您只是需要它來填充您的ComboBox,則在使用文件名對數組進行裝箱時使用try...catch,請捕獲DirectoryNotFoundException並使用空的初始化陣列。