C#Streamreader问题

C#Streamreader问题,c#,text-files,streamreader,C#,Text Files,Streamreader,我正在建立一个程序,让你输入一个数字,并在你重新打开程序时记住它。它使用文本文件将数字保存在中。我正在使用streamreader读取文本文件以获取您上次输入的数字,但它总是引发异常。我应该将文本文件放在哪里,或者更改代码,以便它可以读取和编辑文本?这是我的密码: namespace Cookie_Clicker { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary

我正在建立一个程序,让你输入一个数字,并在你重新打开程序时记住它。它使用文本文件将数字保存在中。我正在使用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)
        {

        }
    }
名称空间Cookie\u点击器
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
专用void tb_文本框(对象发送方,路由目标)
{
}
私有无效添加\单击(对象发送者,路由目标)
{
尝试
{
使用(StreamReader sr=newstreamreader(“cookies.txt”))
{
int data=Convert.ToInt16(sr.ReadToEnd());
tb.Text=Convert.ToString(数据+1);
}
}
捕获(例外)
{
Show(“您的cookie文本文件丢失了!”);
}
}
私有无效重置\单击(对象发送方,路由目标)
{
}
}

}要回答您的问题:

我应该把文本文件放在哪里

您尚未指定cookies.txt的路径,因此程序将在运行它的同一目录中查找它。如果将
cookies.txt
更改为包含路径,例如
C:\dev\cookies.txt
,则可以将文件存储在任何需要的位置

这将允许您绕过“未找到文件”错误,并解决其中存在的任何其他问题

每次它说“你的cookie文本文件丢失了!”

问题1:您没有指定输入文件的正确路径

解决方案1:您需要获取应用程序运行位置的当前路径,然后使用
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块中显示错误消息以识别问题

您可以对异常对象调用
ToString()
,以获取完整的异常信息

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

保存文件的代码在哪里?请尝试此catch块->
catch(Exception ex){MessageBox.Show(ex.ToSTring();}
抱歉,文本文件在VisualStudio\Projects\Cookieclickery文件夹中。您没有向文件写入任何内容。(至少在这段代码中)谢谢@sudhakartipudi,我意识到文本文件在“发布”中文件夹不是“调试”!