PDA

View Full Version : سوال: نادیده گرفتن پوشه وقتی که نمیشه واردش شد



mehran788
یک شنبه 01 بهمن 1391, 10:31 صبح
سلام دوستان
من با کد زیر به فایل های داخل یک پوشه رو می گیرم
string[] files = System.IO.Directory.GetFiles(da);

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

morteza5358
یک شنبه 01 بهمن 1391, 14:33 عصر
سلام
این کد رو بزار تو try-catch
هر وقت exeption داشت یعنی اینکه نمیشه واردش شد.

موفق باشی

plus
یک شنبه 01 بهمن 1391, 14:44 عصر
ظاهرا چاره ای نیس جز اینکه با حلقه، فایل های تک تک پوشه ها رو جدا جدا در بیارین.

mehran788
دوشنبه 02 بهمن 1391, 19:01 عصر
من این کد رو تو try catch امتحان کردم ولی متغییر files رو در این حالت نادیده می گیره

fbd.ShowDialog();
string address = fbd.SelectedPath;
string[] dir = Directory.GetDirectories(address);
int sum = 0;
for (int i = 0; i <= dir.Length; i++)
{
string da = "";
if (i == dir.Length)
da = address;
else
da = dir[i];
try
{
string[] files = System.IO.Directory.GetFiles(da);
}
catch (SystemException ex)
{
if (ex.Message != "")
goto JumpPoint;
}
for (int j = 0; j < files.Length; j++)
{
System.IO.FileInfo fi = new System.IO.FileInfo(files[j]);
string path = fi.FullName;
string name = fi.Name;
string creat =Convert.ToString( System.IO.File.GetCreationTime(files[j]));
string write = Convert.ToString(System.IO.File.GetLastWriteTime(f iles[j]));
string access = Convert.ToString(System.IO.File.GetLastAccessTime( files[j]));
Int64 size = fi.Length;
int counter = 0;
while (size > 1024)
{
size = size / 1024;
counter++;
}
string result="";
switch (counter)
{
case 0: result = "bytes"; break;
case 1: result = "KB"; break;
case 2: result = "MG"; break;
case 3: result = "GB"; break;
case 4: result = "TB"; break;
case 5: result = "HB"; break;
}
string fs = Convert.ToString(size) + " " + result;
dg.Rows.Add(name, path, fs, creat, write, access);
sum++;
}
JumpPoint:;
}
lbquantity.Text = "تعداد فایل:" + sum;

mehran788
سه شنبه 03 بهمن 1391, 05:26 صبح
کی نمی دونه باید چیکار کنم تا با اینکه کد رو تو try catch می ذارم متغییر files v رو تو کل برنامه بشناسه

try
{
string[] files = System.IO.Directory.GetFiles(da);
}
catch (SystemException ex)
{
if (ex.Message != "")
goto JumpPoint;
}

Mahmoud.Afrad
سه شنبه 03 بهمن 1391, 08:22 صبح
آرایه را خارج try تعریف و داخلش مقداردهی کنید.

string[] files = null;
try
{
files = System.IO.Directory.GetFiles(da);
}
catch (SystemException ex)
{
if (ex.Message != "")
goto JumpPoint;
}