2013-07-09 107 views
1
FileInfo _fileinfo = new FileInfo(@"D:\Projects\LSImage\" + dt.Rows[0]["ApplicationImage"].ToString());   
File.Move(_fileinfo.FullName, _fileinfo.FullName.ToString().Replace(_fileinfo.FullName, dt.Rows[0]["ApplicationID"].ToString() + dt.Rows[0]["ApplicationImage"].ToString())); 

它拋出一個錯誤文件重命名工作不

當文件已存在無法創建文件。

我在從數據庫的applicationID LsImages重新命名圖片,所以我與它的應用和再applicationimage的名字從數據庫

+0

'_fileinfo.FullName'已經是你不需要投一個字符串。你的替換也是刪除整個文件路徑和名稱,爲什麼你不使用:'File.Move(_fileinfo.FullName,dt.Rows [0] [「ApplicationID」]。ToString()+ dt.Rows [0 ] [「ApplicationImage」]。ToString());' – Prix

+0

@Prix,我不認爲這會導致錯誤 –

+1

錯誤信息不清楚? –

回答

1

要替換的完整的字符串:

File.Move(_fileinfo.FullName,_fileinfo.FullName的ToString()更換(_fileinfo.FullName,dt.Rows [0] [「的applicationID 「] .ToString()+ dt.Rows [0] [」ApplicationImage「]。ToString()));

您真的不想要這個代替?:

File.Move(_fileinfo.FullName, _fileinfo.FullName.ToString().Replace(dt.Rows[0]["ApplicationImage"], dt.Rows[0]["ApplicationID"].ToString() + dt.Rows[0]["ApplicationImage"].ToString())); 

或者:

File.Move(_fileinfo.FullName, _fileinfo.FullName.Replace(_fileinfo.Name, dt.Rows[0]["ApplicationID"].ToString() + dt.Rows[0]["ApplicationImage"].ToString())); 
0
FileInfo _fileinfo = new FileInfo(@"D:\Projects\LSImage\" + dt.Rows[0]["ApplicationImage"].ToString()); 
try 
{ 
    File.Move(_fileinfo.FullName, _fileinfo.FullName.ToString().Replace(_fileinfo.FullName, dt.Rows[0]["ApplicationID"].ToString() + dt.Rows[0]["ApplicationImage"].ToString())); 
} 
catch(Exception ex) 
{ 
    throw new Exception(String.Format("Trying to rename {0} to {1} failed!",_fileinfo.Fullname,dt.Rows[0]["ApplicationID"].ToString() + dt.Rows[0]["ApplicationImage"].ToString())); 
} 

前綴然後告訴我們什麼報道。

+0

試圖將D:\ Projects \ LSImage \ 634696369076237653.png重命名爲1634696369076237653.png失敗! –

+0

@ user2553774更改'.Replace(_fileinfo.FullName'爲'.Replace(_fileinfo.Name' – Prix

+0

可能是1634696369076237653.png存在於程序當前工作目錄中。 –

0

它看起來像你想預先準備的applicationID到文件的前面。如果是的話,試試這個:

FileInfo _fileinfo = new FileInfo(@"D:\Projects\LSImage\" + dt.Rows[0]["ApplicationImage"].ToString());   

string appID = dt.Rows[0]["ApplicationID"].ToString(); 
string appImage = dt.Rows[0]["ApplicationImage"].ToString(); 
string newFullPath = @"D:\Projects\LSImage\" + appImage + appID; 

File.Move(_fileinfo.FullName, newFullPath); 
1
var [email protected]"D:\Projects\LSImage"; 
var appImage=dt.Rows[0]["ApplicationImage"].ToString(); 
var appId=dt.Rows[0]["ApplicationID"].ToString(); 
var srcFile=Path.Combine(defaultPath,appImage); 
var dstFile=Path.Combine(defaultPath,appId + appImage); 
FileInfo _fileinfo = new FileInfo(srcFile); // This isn't needed to rename 
File.Move(srcFile,dstFile); 
+0

剛剛清理了一下你的代碼。 –

+0

這可能是最清晰的代碼 – Fidel

+0

我結合了下面最好的想法,無情地被盜;-) –

0
File.Move(_fileinfo.FullNmae,_fileinfo.FullName.Replace(_FileInfo.Name,dt.rows[0]["apid"].tostring() + dr.rows[0]["apname"].tosring())) 
+0

謝謝,它的工作 –

+1

@Prix只從源字符串,替換使用名稱 –

+1

@Prix,其實我已經解決了這個由我自己的,當我在這裏給出答案時,我看到了類似於我自己的答案,所以我將其標記爲最佳答案,稍後,我看到幾分鐘前你已經給出了類似的答案:-( –