c#BinaryReader在.close()之后仍然打开;

时间:2017-08-03 10:34:47

标签: c#

我正在制作一个程序,在我选择文件并以十六进制文件写入文件后读取文件。问题BinaryReader.Close();之后仍然打开,当我尝试编写文件时,它会给我System.IO.IOException: the process cannot access the file错误。我错过了什么?

enter image description here

以下是从对话框中选择文件后读取文件的代码。

BinaryReader br = new BinaryReader(File.OpenRead(sfile.FileName));
string pted = null;
br.BaseStream.Position = 0x12;
pted += br.ReadByte().ToString("X2");
if (pted == "01")
{

}
else
{

}
br.Close();

以下是单击按钮时写入文件的代码

Stream st = File.Open(pathTextBox.Text, FileMode.Open);
st.Seek(0x12, SeekOrigin.Begin);
st.WriteByte(0x00);
st.Close();

3 个答案:

答案 0 :(得分:0)

首先检查文件是否在此处,然后使用using指令进行尝试。

答案 1 :(得分:0)

在try catch语句中添加br.close并在关闭后配置二进制阅读器

例如:

try{
    br.close();
    br.dispose();
}
catch(Exception exp)
{
//Assuming you have included using 'namespace System.Diagnostics'
Debug.WriteLine(exp.ToString());
}

您可以阅读有关BinaryReader here

的更多信息

答案 2 :(得分:0)

正如Orgen所说:

if(File.Exists(@pathTextBox.Text)
{
  using(Stream st = File.Open(pathTextBox.Text, FileMode.Open))
   {
    st.Seek(0x12, SeekOrigin.Begin);
    st.WriteByte(0x00);
   }
}

using()将负责一次性使用。