我使用以下代码打开多个XML文件并读取文件的内容但它不起作用。
OpenFD.Filter = "XML Files (*.xml)|*.xml";
OpenFD.Multiselect = true;
if (OpenFD.ShowDialog() == DialogResult.OK)
{
foreach (string file in OpenFD.FileNames)
{
MessageBox.Show(file);
System.IO.Stream fileStream = OpenFD.OpenFile();
System.IO.StreamReader streamReader = new System.IO.StreamReader(fileStream);
using (streamReader)
{
MessageBox.Show(streamReader.ReadToEnd());
}
fileStream.Close();
}
}
出于测试目的,我创建了两个xml文件。
当我打开对话框并选择这两个文件时,我收到四条消息。
即使OpenFileDialog正确读取文件名,我也无法读取第二个文件。它只读取第一个文件。所以我猜测问题与StreamReader有关,而与OpenFileDialog无关。我做错了什么?
答案 0 :(得分:3)
您在每次迭代which中使用OpenFD.OpenFile()
:
打开由 FileName 属性指定的用户选择的文件。
只能是一个选定文件的名称。
使用循环中的file
变量,以及StreamReader
constructor that accepts a string:
using (var streamReader = new System.IO.StreamReader(file))
{
MessageBox.Show(streamReader.ReadToEnd());
}
答案 1 :(得分:3)
这一行是从OpenFileDialog打开文件:
System.IO.Stream fileStream = OpenFD.OpenFile();
但是没有规定哪个文件。您需要一种方法来区分您要打开的文件。我会一起摆脱那一行,只使用你在循环中的字符串文件。
System.IO.StreamReader streamReader = new System.IO.StreamReader(file);