OpenFileDialog 只读取第一个文件
OpenFileDialog reads only the first file
我正在使用以下代码打开多个 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 文件。
- file1.xml(其内容为"string1")
- file2.xml(其内容为"string2")
当我打开对话框和 select 这两个文件时,我收到了四条消息。
- file1.xml
- string1
- file2.xml
- string1
即使 OpenFileDialog 正确读取文件名,我也无法读取第二个文件。它只读取第一个文件。所以我猜这个问题与 StreamReader 有关,而不是与 OpenFileDialog 有关。我做错了什么?
您在每次迭代中使用 OpenFD.OpenFile()
,which:
Opens the file selected by the user, [...] specified by the FileName property.
can only be the name of one selected file.
改用循环中的 file
变量,StreamReader
constructor that accepts a string:
using (var streamReader = new System.IO.StreamReader(file))
{
MessageBox.Show(streamReader.ReadToEnd());
}
此行正在从 OpenFileDialog 打开文件:
System.IO.Stream fileStream = OpenFD.OpenFile();
但是没有指定哪个文件。您需要一种方法来区分您打开的是哪个文件。我会一起摆脱那一行,只使用循环中的字符串文件。
System.IO.StreamReader streamReader = new System.IO.StreamReader(file);
我正在使用以下代码打开多个 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 文件。
- file1.xml(其内容为"string1")
- file2.xml(其内容为"string2")
当我打开对话框和 select 这两个文件时,我收到了四条消息。
- file1.xml
- string1
- file2.xml
- string1
即使 OpenFileDialog 正确读取文件名,我也无法读取第二个文件。它只读取第一个文件。所以我猜这个问题与 StreamReader 有关,而不是与 OpenFileDialog 有关。我做错了什么?
您在每次迭代中使用 OpenFD.OpenFile()
,which:
Opens the file selected by the user, [...] specified by the FileName property.
can only be the name of one selected file.
改用循环中的 file
变量,StreamReader
constructor that accepts a string:
using (var streamReader = new System.IO.StreamReader(file))
{
MessageBox.Show(streamReader.ReadToEnd());
}
此行正在从 OpenFileDialog 打开文件:
System.IO.Stream fileStream = OpenFD.OpenFile();
但是没有指定哪个文件。您需要一种方法来区分您打开的是哪个文件。我会一起摆脱那一行,只使用循环中的字符串文件。
System.IO.StreamReader streamReader = new System.IO.StreamReader(file);