PDA

View Full Version : سوال: مشکل در استفاده از directory.move(a,b); csharp



amirrr3
دوشنبه 01 اسفند 1390, 09:41 صبح
با سلام خدمت دوستان عزیز
من تازه کارم و تو یه کدی به مشکل برخوردم
چرا وقتی می خوام یه پوشه (بدون زیرشاخه و پوشه های دیگر) رو move کنم به راحتی انجام میشه ولی وقتی یه پوشه با زیرشاخه ، یعنی یه پوشه که درونش پوشه های دیگه ای هم هست رو می خوام move کنم برنامه دچار باگ میشه و ارور میده؟؟؟
از کد زیر استفاده می کنم


system.io.directory.move(a,b);
a مبدا b مقصد

amirrr3
دوشنبه 01 اسفند 1390, 12:47 عصر
string[] a = Directory.GetDirectories("d:\\");


try
{
Directory.Move(a[0], a[1]);
MessageBox.Show("The directory move is complete.");
}
catch (ArgumentNullException)
{
MessageBox.Show("Path is a null reference.");
}
catch (System.Security.SecurityException)
{
MessageBox.Show("The caller does not have the " +
"required permission.");
}
catch (ArgumentException)
{
MessageBox.Show("Path is an empty string, " +
"contains only white spaces, " +
"or contains invalid characters.");
}
catch (System.IO.IOException)
{
MessageBox.Show("An attempt was made to move a " +
"directory to a different " +
"volume, or destDirName " +
"already exists.");
}

با این کد هم امتحان کردم که همش کچ آخری رو انتخاب می کنه و اصلا چیزی رو move نمی کنه.

Parham.D
دوشنبه 01 اسفند 1390, 15:00 عصر
سلام. شما میدانید که پیغام Catch آخر چی هست؟ این هست : Cannot Create a file when that file already exist. حالا بهتر میدانید که چطور باید مشکل را حل کرد! :چشمک:

amirrr3
دوشنبه 01 اسفند 1390, 19:08 عصر
سلام. شما میدانید که پیغام Catch آخر چی هست؟ این هست : Cannot Create a file when that file already exist. حالا بهتر میدانید که چطور باید مشکل را حل کرد! :چشمک:
دوست عزیز کاربر دائمی ، اگه مشکل من Cannot Create a file when that file already exist بود که واسش تاپیک نمیزدم
من عرض کردم که برنامه به کچ آخر هدایت میشه اینی که شما فرمودیت یکی از دو دلیل بود که تو این کچ هست.
اصلا من می خوام بدونم این موو کردن فایل چطور اجرا میشه چون من هر کاری می کنم نمیشه
کسی نیست درست حسابی جواب مارو بده؟؟؟؟

shadi khanum
دوشنبه 01 اسفند 1390, 23:11 عصر
دوست عزیز یه Sample واست نوشتم که مسیر دایرکتوری که میخوای move کنی رو میگیره و همچنین مسیر دایرکتوری که میخوای فولدرت به اونجا move بشه و به راحتی کل اون دایرکتوری رو با subfolder و fileهای توش move میکنه
موفق باشی

ehssan65
دوشنبه 01 اسفند 1390, 23:59 عصر
سلام
کسی میدونه 2 متد invoke و invokerequired چی هستند چند نخی چیه.

Parham.D
سه شنبه 02 اسفند 1390, 07:16 صبح
دوست عزیز کاربر دائمی ، اگه مشکل من Cannot Create a file when that file already exist بود که واسش تاپیک نمیزدم
من عرض کردم که برنامه به کچ آخر هدایت میشه اینی که شما فرمودیت یکی از دو دلیل بود که تو این کچ هست.
اصلا من می خوام بدونم این موو کردن فایل چطور اجرا میشه چون من هر کاری می کنم نمیشه
کسی نیست درست حسابی جواب مارو بده؟؟؟؟

Move اینطور هست که فولدر انتخاب شده را به محل جدید کپی و بعد در محل قبل آنها را پاک میکند. کارکردش خیلی ساده است، اینکه شما چطور دارید ازش استفاده میکنید مشکل ایجاد کرد. بالاخره اون پیغام خطای که من گفتم داره از برنامه شما صادر میشه. اگر مشکل شما اون نیست پس چی هست؟ بالاخره اون کچ آخر یا هر کدام باید چیزی برای گفتن داشته باشن که شما باید آنها را حل کنید. برای مثال ببینید اگر فایل یا فلدر از قبل در محل مقصد بوده دوباره آنها را Move نکند. اگر منظور از درست حسابی جواب دادن یعنی کد نویسی برای برنامه شما هست که شادی خانم انجام داد که البته فکر نکنم مشکل شما را حل کنه. من سعی کردن بگم اشکال برنامه کجا میتونه باشه. در کل در زمان استفاده از IO در بیشتر مواقع باید متد Exist برای بررسی از قبل موجود بودن فایلها و فولدها استفاده کنید. اساسا الگریتم شما باید بیشتر توصیف بشه. شاید مقدارهای که در اندیس صفر آرایه وجود داره در اندیس یک آن هم باشه. بخصوص اگر کد در حلقه یا به نحو خاصی استفاده بشه.

amirrr3
سه شنبه 02 اسفند 1390, 14:40 عصر
مرسی شادی جان واقعا عالی بود
مشکل تو یه ریزه کاری بود که باید تو dest بعد از آدرس نام فایل رو هم می نوشتم که از رو کد شما اینو فهمیدم
الان با این کد به راحتی موو شد


string[] a = Directory.GetDirectories("d:\\");


try
{
Directory.Move(a[0], a[1]+ "\\" filename );
MessageBox.Show("The directory move is complete.");
}
catch (ArgumentNullException)
{
MessageBox.Show("Path is a null reference.");
}
catch (System.Security.SecurityException)
{
MessageBox.Show("The caller does not have the " +
"required permission.");
}
catch (ArgumentException)
{
MessageBox.Show("Path is an empty string, " +
"contains only white spaces, " +
"or contains invalid characters.");
}
catch (System.IO.IOException)
{
MessageBox.Show("An attempt was made to move a " +
"directory to a different " +
"volume, or destDirName " +
"already exists.");
}



بازم مرسی