2011-03-16 101 views
1

0字節文件創建時,我試圖替換C#代碼背後的文件。文件保存爲零字節(0字節)

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     File.Replace(FileExactLocation, FileExactLocation,"werwe"); 
    } 
    else 
     FileUpload1.SaveAs(FileExactLocation); 
在上面的代碼

,我試圖刪除位於服務器上的文件,它將被刪除,但我正努力拯救(替換)文件包含0字節......其空...

請給我解決這個問題....

+3

你的代碼沒有多大意義。爲什麼你想用自己替換文件? – CodesInChaos 2011-03-16 11:15:19

+0

似乎沒有被刷新 – Robert 2011-03-16 11:19:51

回答

1

如果我沒看錯的存在內存泄漏的地方在你的代碼,你想嘗試使用 的「使用()」語句,也使確定你丟棄了與該文件相關的所有對象

+0

使用的關鍵是幫助你處理對象。談論使用聲明並且確保處理對象是多餘的。 – 2011-03-16 11:21:49

+1

在上面的代碼片段中,他沒有創建該文件的任何實例,他只是使用'static'方法,所以沒有任何處理。 – 2011-03-16 11:21:56

+0

@Tony如果我錯了,糾正我,在上面提到的代碼被try catch catch finally塊封裝,然後該對象需要像使用'using'語句一樣處理,不可能使用'finally'塊。 – RaM 2011-03-16 11:56:33

2

I認爲你對Replace做什麼感到困惑。如果您只想用新文件替換原始文件,只需刪除舊文件,否則,如果您想保留原始文件的備份,請在保存之前對其進行重命名。

所以,如果我的理解是正確的,我認爲你正在尋找任:

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     File.Delete(FileExactLocation); 
    } 
    FileUpload1.SaveAs(FileExactLocation); 

或者:

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     // Rename the file adding werwe to the filename 
     File.Move(FileExactLocation, Path.Combine(FileExactLocation, "werwe")); 
    } 
    FileUpload1.SaveAs(FileExactLocation); 
0

原因是fileUploadcontrol值回傳後清零......和因此你創建沒有數據的.zip文件.. 在這種情況下,你可以上傳文件使用字節流....