2013-04-17 71 views
-1

當我嘗試創建存儲在服務器中的臨時文件,我得到創建一個新的文件錯誤

System.IO.IOException:因爲它 正在使用由另一個進程無法訪問該文件處理。

要創建我用下面的代碼

public override void SaveAs(string filename) 
{ 
    using (var file = File.Open(filename, FileMode.CreateNew)) 
    stream.CopyTo(file); 
} 

我已搜查和解決方案,我得到的是當讀取該文件的文件。

+0

這聽起來像你想創建一個已經存在的文件名的文件。你每次都用同一個名字傳球嗎? – GrandMasterFlush

+0

MSDN說,如果文件已經存在,函數會拋出這樣的異常.. http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx –

回答

1

如果您需要唯一的文件名,我建議你使用Path.GetTempFileName Method

public override string SaveStreamInTempFile() 
{ 
    string tempFileName = Path.GetTempFileName(); 
    using (var file = File.Open(tempFileName, FileMode.CreateNew)) 
    stream.CopyTo(file); 

    return tempFileName; 
} 
+0

'GetTempFileName()'實際上創建文件。 'GetRandomFileName()'不創建文件,但創建一個更強大的隨機文件名來使用。 http://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename.aspx http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx – pinkfloydx33