look following code:
private string FileRenameHandler(string dic ,string filename)
{
DirectoryInfo info = new DirectroyInfo(dic);
int count = info.GetFiles(filename);
if(count != 0)
{
filename = filename.substring(0,filename.lastindexof('.')+"("+count+")"+filename.substring(filename.lastindexof('.'));
FileRenameHandler(dic,filename);
}
return filename;
}
what we can get when we run this code?
it can generate result :
1(1).txt
1(1).txt
why did come to this?
perhaps you have found this bug;
we rename the filename just (count!=0) ;at last the filename we get from inner filerenamehandler can't work;
filename is just the value in the first circly;
we correct it like this; private void FileNameSameHandle( string fileNameOutNotExtension,ref string fileNameNotExtension,string fileExtension) { //find the file in the appointed directory try { count++; //we can know that whatever rename filename ,if count isn't zero ,it must be one; //int count = dir.GetFiles(filename, System.IO.SearchOption.TopDirectoryOnly).Length; if (System.IO.File.Exists(PathSetting.readProfile() + "//" + fileNameNotExtension + fileExtension)) // MessageBox.Show(count.ToString()); { //local varible cause the exception ,and at last the filename can't be changed; fileNameNotExtension = fileNameOutNotExtension + "(" + count + ")"; FileNameSameHandle(fileNameOutNotExtension, ref fileNameNotExtension,fileExtension); } } catch (Exception ex) { LogHelper.WriteLog(LogHelper.LogType.Error, "rename file exception:"+ex.Message); } }