WPF 中的记事本,System.IO.File.ReadAllText
Notepad in WPF, System.IO.File.ReadAllText
打开文本文件时遇到问题...
有这段代码,调用后从文件中有空字符串
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;
}
在 WPF 中 OpenFileDialog.ShowDialog()
return 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");
}
不需要调用 ToString()
,更糟糕的是,如果 ShowDialog()
的 return 值为空,它会抛出 NullReferenceException
,因为 ShowDialog()
returns bool?
(Nullable<bool>
) 如另一个答案所指出的。
这是一个两行解决方案...
string OpenTextFile()
{
var ofd = new OpenFileDialog();
return ofd.ShowDialog() == true ?
System.IO.File.ReadAllText(ofd.FileName) :
String.Empty;
}
打开文本文件时遇到问题... 有这段代码,调用后从文件中有空字符串
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;
}
在 WPF 中 OpenFileDialog.ShowDialog()
return 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");
}
不需要调用 ToString()
,更糟糕的是,如果 ShowDialog()
的 return 值为空,它会抛出 NullReferenceException
,因为 ShowDialog()
returns bool?
(Nullable<bool>
) 如另一个答案所指出的。
这是一个两行解决方案...
string OpenTextFile()
{
var ofd = new OpenFileDialog();
return ofd.ShowDialog() == true ?
System.IO.File.ReadAllText(ofd.FileName) :
String.Empty;
}