2014-03-26 78 views
-1

我正在構建一個程序,輸入一個數字並在您重新打開該程序時記住它。它使用一個文本文件來保存數字。我使用streamreader讀取文本文件以獲取最後輸入的數字,但它總是拋出異常。我應該在哪裏放置文本文件或更改我的代碼,以便它可以讀取和編輯文本?這裏是我的代碼:C#Streamreader問題

namespace Cookie_Clicker 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void tb_TextBox(object sender, RoutedEventArgs e) 
     { 

     } 

     private void add_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 
       using (StreamReader sr = new StreamReader("cookies.txt")) 
       { 
        int data = Convert.ToInt16(sr.ReadToEnd()); 
        tb.Text = Convert.ToString(data + 1); 
       } 
      } 
      catch (Exception) 
      { 
       MessageBox.Show("Your cookie text file is missing!"); 
      } 
     } 

     private void reset_Click(object sender, RoutedEventArgs e) 
     { 

     } 
    } 

}

+1

什麼問題? – SLaks

+1

保存文件的代碼在哪裏? – Steve

+0

嘗試此catch塊 - >'catch(Exception ex){MessageBox.Show(ex.ToSTring();}' –

回答

0

每次它說「您的Cookie文本文件丟失!」

問題1:您沒有指定輸入文件的正確路徑。

解決方案1:你需要得到它正在哪裏運行應用程序的Currentpath,然後使用Path.Combine()方法文件名相結合。

試試這個:

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"cookies.txt"); 
using (StreamReader sr = new StreamReader(path)) 
{ 
    int data = Convert.ToInt16(sr.ReadToEnd()); 
    tb.Text = Convert.ToString(data + 1); 
} 

建議:你需要始終顯示在catch塊中的錯誤消息,以確定問題。

您可以在Exception對象上調用ToString()以獲取完整的異常信息。

catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToSTring(); 
} 
0

要回答你的問題:

我應該在哪裏放置文本文件...?

您尚未指定cookies.txt的路徑,因此程序會在運行它的相同目錄中查找它。如果您將cookies.txt更改爲包含路徑(例如C:\dev\cookies.txt),則可以將該文件存儲在任何您喜歡的位置。

這將允許您通過文件未找到錯誤,並解決您在那裏有任何其他問題。