2012-06-29 34 views
1

我是C#的新手,在保存到新文件時遇到了一些問題。我的程序有兩個保存選項:另存爲&另存爲。保存爲Ubuntu Linux時存在共享衝突

保存時出現共享違規錯誤,但我通過關閉以前的文件流來解決該問題。但是,我仍然無法弄清楚爲什麼我的另存爲代碼給我一個共享違規錯誤。

下面的代碼:

 // get a file stream from the file chooser 
     FileStream file = File.OpenWrite(saveFc.Filename); 
     // check to see if the file is Ok 
     bool fileOk = file.CanWrite; 
     if (fileOk == true) 
     { 
      // get the filename 
      string filename = file.Name; 
      // store the filename for later use 
      UtilityClass.filename = filename; 
      // get the text from textview1 
      string text = textview1.Buffer.Text; 
      // get a StreamWriter 
      StreamWriter writer = File.CreateText(filename); 
      // write to the file 
      writer.Write(text); 
      // close/save the file 
      writer.Close(); 
      file.Close(); 
     } 
    } 
    // close the file c 

如果你能幫助我弄清楚那將是非常讚賞。謝謝!

+0

對不起,關於代碼...我從平板電腦發佈此和格式有問題。我會盡我所能修復它。或者我討厭問別人是否可以解決這個問題,那太棒了。 – Razick

回答

3

你打開同一個文件兩次:

FileStream file = File.OpenWrite(saveFc.Filename); 

和:

string filename = file.Name; 
StreamWriter writer = File.CreateText(filename); 

你的代碼也許可以簡化爲:

using (var writer = File.CreateText(saveFc.Filename)) 
{ 
    // store the filename for later use 
    UtilityClass.filename = saveFc.Filename; 

    // get the text from textview1 
    string text = textview1.Buffer.Text; 

    // write the text 
    writer.Write(text); 
} 

如果你打開該文件CreateText/OpenWrite它將始終是可寫的(否則將引發異常)。 using塊在退出時將自動關閉writer