【问题标题】:How to use OpenFileDialog如何使用 OpenFileDialog
【发布时间】:2016-02-17 17:23:24
【问题描述】:

我正在使用 C# 打开一个文本文件,然后我使用以下代码读取其中的所有内容:

OpenFileDialog pic = new OpenFileDialog();
pic.ShowDialog();

System.IO.StreamReader file = new System.IO.StreamReader(pic.OpenFile());
a=file.readline();

读完后,我想再读一次数据,但它告诉我它是空的 - 我怎样才能再读一次?

【问题讨论】:

  • 您还显示了部分代码..您为什么不发布和/或显示所有相关代码..? a 是什么a 定义在哪里?等等......在OpenFileDialog 上做一个简单的谷歌搜索,互联网上有大量的工作示例以及SO 也谷歌函数File.ReadAllLines
  • 您可以使用 OpenFileDialogFileName 属性并将获得的文件名存储在变量中。因此,虽然您知道文件名,但您可以随时打开它...
  • a 是字符串...我忘记写了

标签: c# openfiledialog


【解决方案1】:

试试这样的

var openDialog = new OpenFileDialog();
if (openDialog.ShowDialog == DialogResult.OK)
{
    using (var stream = File.OpenRead(openDialog.FileName)
    {
        //read everything here
    }
}

【讨论】:

  • OpenFileDialog pic = new OpenFileDialog(); pic.ShowDialog();字符串 a; System.IO.StreamReader 文件 = new System.IO.StreamReader(pic.OpenFile()); while ((a = file.ReadLine()) != null) { //mycodes } //这里我想从同一个文件中再次读取
【解决方案2】:

我的猜测是该文件仅包含 1 行,因此一旦您阅读了它,就没有什么可阅读的了。如果您想再次阅读同一行,则需要关闭文件并再次打开它。您还应该在流阅读器周围使用“使用”语句以确保正确处理它,例如:

string a = string.Empty;
using(StreamReader reader = new StreamReader(pic.FileName))
{
  a = reader.ReadLine();
}

【讨论】:

  • 这仅适用于我对每一行都有 for 循环的一行
  • 但是在我读完 for 循环并进行一些处理后,我想再次从同一个文件中读取......所以我只是 readline 但它告诉我它是空的......所以我想要再次阅读
  • 然后只需在“使用”语句中放置一个 for 循环。问题不在于这个问题——我的例子也不是为了表明这一点——问题在于您正在阅读文件的末尾。然后,您需要关闭它并再次打开它。如果您在我展示的语句下方编写另一个相同的 using 语句,您将再次从文件的开头读取...
猜你喜欢
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2011-02-16
相关资源
最近更新 更多