【发布时间】:2013-06-14 02:57:49
【问题描述】:
我正在尝试制作一个字节写入器。到目前为止,在继续编写编写器之前,我已经让程序编写文件头作为一般测试。问题是,我通过coreForm的coreSaveFileDialog选择了一个文件后,一行
var fs = new FileStream(classCoreForm.CoreSaveFileDialog.FileName, FileMode.Open, FileAccess.ReadWrite);
在对话框中看不到 FileName,并抛出异常“空路径名不合法”。
这是我的方法的来源:
internal void writeHeader()
{
var classCoreForm = new coreForm(); //Creates reference instance for coreForm=
var fs = new FileStream(classCoreForm.coreSaveFileDialog.FileName, FileMode.Open, FileAccess.ReadWrite);
/*
* Writes file header via fs.WriteByte . . .
*/
}
writeHeader 正在从名为 saveScript 的初步函数中调用。这是它的来源。
internal void saveScript()
{
var classCoreForm = new coreForm(); //Creates reference instance for coreForm
if (fileAlreadySaved == false)
{
classCoreForm.coreSaveFileDialog.ShowDialog(); //Shows save file dialog
if (classCoreForm.coreSaveFileDialog.FileName != "")
{
writeHeader();
}
else
{
}
}
}
我做错了什么?我是否在 SaveFileDialog 的属性中错误地设置了某些内容,还是上面代码中的某些内容?
【问题讨论】:
-
你有没有在
new FileStream(...)的行上放一个断点,看看Filename属性返回什么? -
这是调试器的停止点。通过在调试期间要暂停执行的行上按 F9 在 Visual Studio 中切换一个。按 F5 开始调试。当执行到达断点时,代码将在该行暂停,您可以检查程序状态。然后,您可以向前运行 (F5) 或跳过/进入函数调用(F10 / F11 但我不确定,我有自定义设置)。
-
等等,我在本地窗口中看到
FileName属性为空。等一下,让我编辑我的帖子。 -
ShowDialog()函数的返回值是多少?如果不是DialogResult.Ok,您将不会收到返回给您的文件名。另外,您要打开什么文件? Windows 资源管理器中的某些文件夹实际上是虚拟文件夹,可能不会在文件系统中返回文件名。在这种情况下,您可能会得到 null。