recursion error !

 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); } }

你可能感兴趣的:(exception,String,File,recursion)