一般情况下,我们进行文件操作时,都是打开或创建文件后就直接使用。例如创建二进制文件并进行二进制数据写入:

using System;
using System.IO;

namespace BinaryFileApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            BinaryWriter bw;
            BinaryReader br;
            string s = "101101010100";
            // 创建文件
            try
            {
                bw = new BinaryWriter(new FileStream("mydata",
				FileMode.Create));
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "\n Cannot create file.");
                return;
            }
            // 写入文件
            try
            {
                bw.Write(s);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "\n Cannot write to file.");
                return;
            }

            bw.Close();
            // 读取文件
            try
            {
                br = new BinaryReader(new FileStream("mydata",
				FileMode.Open));
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "\n Cannot open file.");
                return;
            }
            try
            {
                s = br.ReadString();
                Console.WriteLine("String data: {0}", s);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "\n Cannot read from file.");
                return;
            }
            br.Close();
            Console.ReadKey();
        }
    }
}
以上代码参考自http://www.runoob/csharp/csharp-binary-files.html菜鸟教程

然而,笔者因为工作需要,需要先创建文件,在后续的工作再进行写入,一开始代码如下


然而当创建文件后,进行后续字段写入时却出现报错


查询官网API,在https://msdn.microsoft/zh-cn/library/981h90e5(v=vs.100).aspx的备注中可以看到如下字样


所以可知我们这次的错误是由于没有对文件句柄进行关闭导致的,搜索相关文档后更改代码如下:


调试通过,在以后的调用中也没有出现问题。

更多推荐

C#初学者使用file.creat()创建文件后,显示正由另一进程使用