日期:2014-05-18  浏览次数:20804 次

新人问题:创建和写文件
部分代码如下:[code=C#][/code]namespace myFile2
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }

  private void btnCreate_Click(object sender, EventArgs e)
  {
  if (!File.Exists(@"E:\My File.dat"))
  {
  File.CreateText(@"E:\My File.dat");
  }
  }
  private void btnWrite_Click(object sender, EventArgs e)
  {
  try
  {
  using (StreamWriter sw =(@"E:\My File.dat"))
  {
  sw.WriteLine("It is just a test");
  sw.Close();
  sw.Dispose();
  }
  }
  catch(Exception ex)
  {
  MessageBox.Show(ex.Message);
  }
  }
  }
}

点击第一个按钮创建文件,接着点第二个按钮向文件写入一些内容。为什么会出现异常,说文件正在被另一个进程使用。
弄了一个小时也没有解决,发帖问问
另:因为创建文件和写入不是同时进行的,该怎么办
不要笑话我的问题低级啊


------解决方案--------------------

C# code

 private void btnCreate_Click(object sender, EventArgs e)
        {

            FileStream fs = new FileStream(@"E:\My File.dat", FileMode.OpenOrCreate);
            fs.Dispose();
            fs.Close();
            
        }

        private void btnWrite_Click(object sender, EventArgs e)
        {
            try
            {

                FileStream fs = new FileStream(@"E:\My File.dat", FileMode.Open);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine("It is just a test");
                sw.Flush();
                sw.Close();
                fs.Close();
                fs.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

------解决方案--------------------
C# code


 private void btnCreate_Click(object sender, EventArgs e)
  {
  if (!File.Exists(@"E:\My File.dat"))
  {
  File.CreateText(@"E:\My File.dat").Close();//此处释放数据流对文件的操作才会在下次BUTTON事件中写操作中不会被其他进程占有。
  }
  }