【发布时间】:2023-03-31 22:44:02
【问题描述】:
我正在编写一个使用 C# 文本文件的程序。
我使用解析器类作为文件结构和程序之间的接口。
这个类包含一个StreamReader、一个StreamWriter和一个FileStream。我使用FileStream作为读写器的公共流,否则当它们都打开文件时这两者会发生冲突。
解析器类有一个名为m_path的类变量,这是文件的路径。我已经仔细检查过,路径是正确的。 OpenStreams() 和 ResetStreams() 完美运行,但是在 delete() 函数中调用 CloseStreams() 后,程序转到 catch 子句,因此 File.Delete(m_path) 不会被执行。在其他情况下,CloseStreams() 函数可以完美运行。当我试图关闭StreamReader (m_writer) 时出错,但它确实给出了异常(文件已关闭)。
/**
* Function to close the streams.
*/
private void closeStreams() {
if (m_streamOpen) {
m_fs.Close();
m_reader.Close();
m_writer.Close(); // Goes wrong
m_streamOpen = false;
}
}
/**
* Deletes the file.
*/
public int delete() {
try {
closeStreams(); // Catch after this
File.Delete(m_path);
return 0;
}
catch { return -1; }
}
我这样调用函数:
parser.delete();
谁能给我一些建议?
【问题讨论】:
-
doesn't work是什么意思? -
MCVE?
-
你有什么异常吗?
-
您好,对不起。第一次在 StackOverflow 上提问!我已经编辑了我的问题,所以希望现在更清楚了。
-
它确实会抛出异常,否则它不会进入 catch 子句。尝试
catch (Exception ex){Console.WriteLine(Ex.Message);}调试您的代码
标签: c# file filestream