2010-04-20 23 views
0

我直接從MSDN中拿出了一個例子。我想創建一個文件並立即寫入。我希望能使用FileInfo對象。所以我創建一個新的FileInfo對象,調用Create,然後打開一個FileStream。當我嘗試打開FileStream時,出現異常,告訴我另一個進程正在使用該文件。 (是我)。爲什麼FileInfo.OpenWrite()在FileInfo.Create()之後直接調用時會拋出異常?

我直接複製粘貼MSDN示例,它們的代碼遭受同樣的事情。我/他們做錯了什麼? (PS的.Net 3.5)

更新:下面的代碼是直接從MSDN

string path = @"c:\MyTest.txt"; 
    FileInfo fi = new FileInfo(path); 

    if (!fi.Exists) 
    { 
     //Create the file. 
     fi.Create(); 
    } 

    // Open the stream for writing. 
    using (FileStream fs = fi.OpenWrite()) 
    { 
     Byte[] info = 
      new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method."); 

     // Add some information to the file. 
     fs.Write(info, 0, info.Length); 
    } 

回答

2

您試圖打開一個文件已打開並鎖定,你需要調用fi.Close()如果您打算重新使用fi.Create()打開一個允許您自動讀取/寫入文件的文件流,則在創建之後。我相信默認情況下,如果已經存在,Create()將只使用現有的文件,因此您可以使用它來初始化文件流。

例如

// Create a reference to a file. 
FileInfo fi = new FileInfo("temp.txt"); 
// Actually create the file. 
FileStream fs = fi.Create(); 
// Modify the file as required, and then close the file. 
fs.Close(); 
// Delete the file. 
fi.Delete(); 
+0

上有沒有的FileInfo Close方法。所以我認爲不是。這也是微軟的例子。 – uriDium 2010-04-20 14:04:06

+0

啊,我現在看到了。非常感謝你。那是它:) – uriDium 2010-04-20 14:10:00

+0

如果它解決了您的問題,請將答案標記爲已接受。 – gehho 2010-04-20 14:36:02

相關問題