درود

یه برنامه ای قرار بود ما بنویسیم که یه جای کار باید اسم یک فایل رو عوض می کردم و روش اسم استانداردی که تعریف شده رو تنظیم می کردم، اسم عوض کردن هم همه می دونند که چیز خاصی نداره با دستور ساده File.Move و قرار دادن آدرس اسم قدیم و آدرس اسم جدید اسم تغییر می کند به این صورت:

 

string oldfilename = @"D:\FolderName\01.txt";
string newfilename = @"D:\FolderName\02.txt";
System.IO.File.Move(oldfilename, newfilename);

خب همانطور که مشاهده می کنید همه چی ساده است ، اما زمانی که برنامه اجرا می شود و دستور File.Move می خواهد اجرا شود با Exception زیر مواجه مواجه می شدم:

Exception Details: System.NotSupportedException: The given path's format is not supported.

سیستم آدرس دهی رو عوض کردم و جای @ از دوتا // استفاده کردم باز هم خطا رفع نشد. 

همانطور که میدونید در ویندوز بعضی کاراکتر ها در آدرس فایل نباید وجود داشته باشد که عبارتند از:

 

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

اما این ها هم در کد ما وجود ندارد! 

از متد Path.Combine هم استفاده کردم باز مشکل رفع نشد!

string path1 = "D:\\FolderName\\";

string path2 = "01.txt";

string combination = Path.Combine(path1 , path2 );
من برای بدست آوردن آدرس فایل ابتدا روی آن راست کلیک میکردم Properties و سپس از سربرگ Security آدرس رو داخل ویژوآل استدیو کپی میکردم این کار یک کاراکتر اضافی به آدرس اضاف می کرده هنوز متوجه نشدم دقیق چی هست اما زمانی که آدرس رو از Windows Explorer کپی کردم و اسم فایل رو دستی بهش اضاف کردم مشکل حل شد.

 این کار در ویندوز 10 و ویژوآل استدیو 2015 آپدیت 3 انجام میگرفته که حالا در نسخه های بعدی و به روزرسانی های بعدی که برای جفتشون بیاد من باز تست میکنم و اگر این مشکل برطرف شده بود این پست را به روز می کنم.

اگر راه کار دیگه ای برای این موضوع دارید در نظرات اعلام کنید.