PDA

View Full Version : مبتدی: The directory name is invalid



ghazal_mohammady
پنج شنبه 20 فروردین 1394, 14:44 عصر
عرض ادب
چرا این متد دچار مشکل میشه؟
ارور در این خطه

foreach (var file in new DirectoryInfo( folderPath).GetFiles
مقدار foldepath هم برابره با:
D:\T93-94\DataSet\DataSet\Metamorphic Families\G2\g2_4.asm
یعنی از openfiledialog خونده میشه این مقدار
ارور توی عنوان رو میده
اینم کد اصلی:




Dictionary<string, Dictionary<string, int>> mohasebe_tedade_yekta(string folderPath)
{
Dictionary<string, Dictionary<string, int>> assembelyDictionary = File.ReadAllLines("AssemblyKeywords.txt")
.Select(s => s.ToLower()).ToDictionary(x => x, x => new Dictionary<string, int>());
foreach (var file in new DirectoryInfo( folderPath).GetFiles())
{
create_matrix(assembelyDictionary, file.FullName);
}
return assembelyDictionary.Where(d => d.Value.Count > 0).Select(d => d.Key)
.ToDictionary(x => x, x => new Dictionary<string, int>());

}

am_al_59
پنج شنبه 20 فروردین 1394, 15:23 عصر
آدرسی رو بده که توی space نداشته باشه ببین بازهم خطا داری؟
ممکنه خطا توی اون تابع create_matrix باشه

ghazal_mohammady
پنج شنبه 20 فروردین 1394, 23:13 عصر
سپاس
عرض کردم آدرسو مستقیم از openfiledialog میگیرم

if (dialog == DialogResult.OK)
{
filepath = openFileDialog1.FileName;// System.IO.Path.GetFileName(openFileDialog1.FileNam e);
}
نه اون تابع مشکلی نداره، قبلا تست شده ولی یه آدرس ثابت گرفته نا از openfd

am_al_59
پنج شنبه 20 فروردین 1394, 23:17 عصر
با همون
openfiledialog از آدرسی که توی space نداشته باشه بده
اگر باز خطا داد عکسشو بزار

ghazal_mohammady
جمعه 21 فروردین 1394, 00:56 صبح
عکس از چی بندازم؟
این متن کامل ارور
An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll

Additional information: The directory name is invalid.

am_al_59
جمعه 21 فروردین 1394, 01:03 صبح
برای من تا حالا این خطا در دوحالت پیش اومده یا آدرس بیشتر از 255 کاراکتر بوده یا آدرس کلاً اشتباه بوده
وقتی خطا میده محتوی متغیری که آدرس رو داره توی Explorer چک کن بیبین درسته

ghazal_mohammady
جمعه 21 فروردین 1394, 01:06 صبح
"D:\\T93-94\\DataSet\\DataSet\\MetamorphicFamilies\\G2\\g2_ 2.asm"

am_al_59
جمعه 21 فروردین 1394, 01:09 صبح
خطا توی اون create_matrix هست توی حلقه کاری با آدرس نمیکنی که خطا بده
حلقه چند بار اجرا میشه بعد خطا میده ؟

ghazal_mohammady
جمعه 21 فروردین 1394, 01:15 صبح
نه مطمعنم خطا تو حلقه ست
بخاطر DirectoryInfo ست
اصلا حلقه اجرا نمیشه

am_al_59
جمعه 21 فروردین 1394, 01:17 صبح
وقتی به حلقه میرسی مقدار folderPath چیه ؟

ghazal_mohammady
جمعه 21 فروردین 1394, 01:18 صبح
وقتی این خطو اینطوری مینویسم

filepath = System.IO.Path.GetFileName(openFileDialog1.FileNam e);
این ارورو میده
An unhandled exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll

Additional information: Could not find a part of the path 'D:\T93-94\paper93-93\New folder\v1\v1\bin\Debug\g2_2.asm\'.

ghazal_mohammady
جمعه 21 فروردین 1394, 01:19 صبح
وقتی به حلقه میرسی مقدار folderPath چیه ؟

همونی که بالا نوشتم همونیه که از این کد میخونه

filepath = System.IO.Path.GetFileName(openFileDialog1.FileNam e);

am_al_59
جمعه 21 فروردین 1394, 01:20 صبح
filepath = System.IO.Path.GetFileName(openFileDialog1.FileNam e);


اینکه اسم فایل میشه معلومه خطا میده باید آدرس فولدر باشه


foreach (var file in new DirectoryInfo( folderPath).GetFiles())


اول حلقه مقدار folderPath چیه؟
باید مقدارش برابر آدرس قولدر باشه نه فایل

ghazal_mohammady
جمعه 21 فروردین 1394, 01:26 صبح
وقتی به حلقه میرسی مقدار folderPath چیه ؟ همونی که بالا نوشتم همونیه که از این کد میخونه
filepath = System.IO.Path.GetFileName(openFileDialog1.FileNam e);

محمد آشتیانی
جمعه 21 فروردین 1394, 01:32 صبح
سلام
شما بعنوان پارامتر باید مسیر یک فولدر رو بدی ، در حال حاضر شما داری مسیر یک فایل رو میدی که اشتباهه (دوستمون هم اشاره کردن)

D:\T93-94\DataSet\DataSet\Metamorphic Families\G2\g2_4.asm

به جاش باید به اینصورت بشه

D:\T93-94\DataSet\DataSet\Metamorphic Families\G2

بجای OpenFileDialog از FolderBrowserDialog برای انتخاب فولدر استفاده کن.

این لینک هم مفیده https://msdn.microsoft.com/en-us/library/4cyf24ss(v=vs.110).aspx

موفق باشید.

am_al_59
جمعه 21 فروردین 1394, 01:32 صبح
توی کد بالا filepath نداری من نمیبینم!
اگر منظورت folderPath هست اینطوری بنویس

folderPath=System.IO.Path.GetDirectoryName(openFil eDialog1.FileName);

ghazal_mohammady
جمعه 21 فروردین 1394, 01:48 صبح
توی کد بالا filepath نداری من نمیبینم!
اگر منظورت folderPath هست اینطوری بنویس

folderPath=System.IO.Path.GetDirectoryName(openFil eDialog1.FileName);


با این روش مشکلم حل شد
خیلی از کمکهاتون سپاس گزارم