代码之家  ›  专栏  ›  技术社区  ›  Yura Gumenyuk

WPF、System.IO.File.ReadAllText中的记事本

  •  1
  • Yura Gumenyuk  · 技术社区  · 8 年前

    打开文本文件时遇到问题。。。 有此代码,调用后有空字符串FromFile

        public string OpenTextFile ()
        {
            var stringFromFile = string.Empty;
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog().ToString().Equals("OK"))
                stringFromFile = System.IO.File.ReadAllText(ofd.FileName);
            return stringFromFile;
        }
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   blins    8 年前

    使命感 ToString() 不需要,更糟糕的是,它会抛出 NullReferenceException 如果返回值 ShowDialog() 为空,因为 显示对话框() 返回 bool? ( Nullable<bool> )正如另一个答案所指出的。

    这是一个双线解决方案。。。

    string OpenTextFile()
    {
        var ofd = new OpenFileDialog();
        return ofd.ShowDialog() == true ?
                System.IO.File.ReadAllText(ofd.FileName) :
                String.Empty;
    }
    
        2
  •  3
  •   Tinwor    8 年前

    在WPF中 OpenFileDialog.ShowDialog() 返回a Nullable<bool> 所以您应该按如下方式更改代码

    public string OpenTextFile()
            {
                OpenFileDialog ofd = new OpenFileDialog();
                Nullable<bool> res = ofd.ShowDialog();
                if(res == true)
                {
                    using(StreamReader sr = new StreamReader(ofd.FileName))
                    {
                      return sr.ReadToEnd();
                    }
                }
                //Here message error
                throw new Exception("Something");
            }