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