我正在visual studio ultimate 2012上编写一个基于Windows窗体的应用程序。我输入了一个opendialog以打开和读取文件。这是代码: -
private void button1_Click(object sender, System.EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
// Insert code to read the stream here.
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
但是每当我尝试运行它时,当我从浏览器窗口中选择一个文件时,它会向我显示一个filenotfound异常,因为它在默认目录中查找该文件(位于Documents / VisualStudio / Projects / WindowsFormApplication / bin中) / debug / openFileDialog1),不在我指定的目录中。请帮忙!!
答案 0 :(得分:1)
问题是以下一行
openFileDialog1.RestoreDirectory = true;
这会导致在关闭对话框后将当前目录重置为原始目录。看起来OpenFile
方法正在使用相对路径,因此尝试打开对话框开始的文件,而不是它结束的位置。
尝试删除RestoreDirectory
设置,并在使用文件