我遇到了我正在處理的ASP.NET MVC程序的文件更新部分的問題。基本前提是程序將從用戶處獲取已編輯的圖像,然後使用新數據更新舊文件,並保留舊名稱。但由於某種原因,當文件從臨時文件夾移動到它應該去的文件夾時,它會保存爲新文件,同時保留舊文件。 (例如,「foo 1-1.jpg」和「foo 1-1.jpg」存在於同一個文件夾中)。據我所知,這兩個文件名是相同的。爲什麼會發生這種情況,以及如何使它能夠按照預期先刪除舊文件?程序保存一個文件,但不刪除舊文件同名
我在移動它之前得到了舊的文件名,所以應該沒有問題。也沒有路徑問題。
我不確定是否存在傳入路徑的問題,但我使用相同的方法來獲取文件路徑移至,因此我不知道爲什麼它會失敗File.Delete ()而不是File.Move()。
這裏是有問題的代碼:
/// <summary>
/// Move a number of files to a single directory, keeping their names
/// and overwriting if the switch is toggled.
/// Will ignore nonexistent files, and return false if the specified directory does not exist.
/// Returns true if it succeeded, false if it did not.
/// </summary>
/// <param name="filePaths">An array of filepath strings, </param>
/// <param name="saveDirectory">The path to the directory to use</param>
/// <param name="overWrite">Optional, defaults to false. Whether or not
/// to overwrite any existing files with the same name in the new directory.
/// If false, skips files that already exist in destination.</param>
/// <returns>bool</returns>
public static bool MoveSpecificFiles(string[] filePaths, string saveDirectory, bool overWrite = false)
{
//If the directory doesn't exist, error out.
if (!Directory.Exists(saveDirectory))
{
return false;
}
string fileName;
try
{
foreach (string filePath in filePaths)
{
//Check if the file to be moved exists. If it doesn't, skip it and go to the next one.
if (File.Exists(filePath))
{
fileName = Path.GetFileName(filePath);
//if the overwrite flag is set to true and the file exists in the new directory, delete it.
if (overWrite && File.Exists(saveDirectory + fileName))
{
//WHERE THE ERROR IS OCCURING
File.Delete(saveDirectory + fileName);
}
//If the file to be moved does not exist in the new location, move it there.
//This means that duplicate files will not be moved.
if (!File.Exists(saveDirectory + fileName))
{
File.Move(filePath, saveDirectory + fileName);
}
}
//throw new ArgumentException();
}
}
catch (Exception)
{
//check = saveDirectory + " " + Path.GetFileName(filePaths[0]);
return false;
}
return true;
}
任何幫助將非常感激。
你得到的錯誤信息是什麼? – Shyju
沒有具體的錯誤消息,只是意想不到的行爲。 File.Delete未找到指定的文件,並且可以推斷出它不會生成任何異常,因爲圖像正在移動。問題是它應該找到舊文件,因爲在前面的方法中,我抓取舊文件的名稱以傳入此文件。 –
你確定'overWrite'變量的值是真的嗎? – Shyju