2014-03-26 37 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),则可以将该文件存储在任何您喜欢的位置。

这将允许您通过文件未找到错误,并解决您在那里有任何其他问题。