الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال : ماهي افضل طريقة للتمييز بين مسار ملف او مجلد ؟

بدأه HassanAlattas في 1 ديسمبر 2008 · 9 رد · 665 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب,,,,,

في برامجي استخدم الدوال ، Directory.Exists، و File.Exists للتمييز بين مسار ملف او مسار مجلد،

مثلاً في الدالة هذي

 

public [color= #993333;]static FileSystemInfo GetFileSystemInfo[color= #009900;]([color= #993333;]string path[color= #009900;])

        [color= #009900;]{

            [color= #b1b100;]if [color= #009900;](Directory.[color= #202020;]Exists[color= #009900;](path[color= #009900;])[color= #009900;])

                [color= #b1b100;]return new DirectoryInfo[color= #009900;](path[color= #009900;]);

            [color= #b1b100;]else [color= #b1b100;]if [color= #009900;](File.[color= #202020;]Exists[color= #009900;](path[color= #009900;])[color= #009900;])

                [color= #b1b100;]return new FileInfo[color= #009900;](path[color= #009900;]);

 

            throw new Exception[color= #009900;]([color= #009900;]);

        [color= #009900;]}

سؤالي هل توجد طريقة افضل للتمييز ؟

تم تعديل هذه المشاركة بواسطة ddata11 في 1 ديسمبر 2008 في 19:29

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#2
public static FileSystemInfo GetFileSystemInfo(string path)
{
	if((File.GetAttributes(path) & FileAttributes.Directory) != 0) 
	{
		if(Directory.Exists(path))
			return new DirectoryInfo(path);
	}

	if(File.Exists(path))
	{
		return new FileInfo(path);
	}

	throw new Exception(string.Format("the path \"{0}\" does not exist.", path));
}

مواضيع متنوعة

#3

طريقة الاخ HassanAlattas تعمل 1 تشك فى حالة فهرس و 2 تشك فى حالة ملف

طريقة الاخ Moudey تعمل 2 تشك فى حالة فهرس و 2 تشك فى حالة ملف

طريقة HassanAlattas ربما تكون افضل

#4

السلام عليكم ,,,

اخي Moudey مشكور وجزاك الله كل خير.

الطريقة شغالة 100%.

اخي a3ghadeer مشكور على تعليقك,,,

لكن طريقة Moudey ممكن تصاغ بهذا الشكل ايضاً

public static FileSystemInfo GetFileSystemInfo(string path)
		{
			if ((File.GetAttributes(path) & FileAttributes.Directory) != 0)
			{
				return new DirectoryInfo(path);
			}

			if (File.Exists(path))
			{
				return new FileInfo(path);
			}

			throw new Exception(string.Format("the path \"{0}\" does not exist.", path));
		}

وفي هذه الحالة يكون عدد Checks متساوي في الطريقتين..

المهم مشكور وبارك الله فيك اخي.

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#5

نعم هناك خطأ فى اضافتى لم الاحظة.

يمكن الاكتفاء بـ if ((File.GetAttributes(path) & FileAttributes.Directory) != 0) كما وضح الاخ حسان

مواضيع متنوعة

#6

اذا كان المجلد غير موجود

فالجملة (File.GetAttributes(path ستعطى System.IO.FileNotFoundException was unhandled

اما (Directory.Exists(path كما فى اول مشاركة فلن تعطى هذا Exception

#7

انا أخدت كود الاخ اللي طرح السؤال .. وقمت فقط بتعديل بسيط أعتقد انه سيسهل طريقة الحصول على العائد المرجو :

public static int GetFileSystemInfo(string path)

{

if (Directory.Exists(path))

return 0; //it's a directory

else if (File.Exists(path))

return 1;//it's a file

throw new Exception();

}

تم تعديل هذه المشاركة بواسطة خالد حاتم كخن في 4 ديسمبر 2008 في 18:26

#8

تشكر اخي خالد,,,,

a3ghadeer كتب:
اذا كان المجلد غير موجود

فالجملة (File.GetAttributes(path ستعطى System.IO.FileNotFoundException was unhandled

اما (Directory.Exists(path كما فى اول مشاركة فلن تعطى هذا Exception

اخي حصول Exception هو المطلوب بالضبط في حال كان المسار لملف او مجلد غير موجود اصلاً .

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#9
HassanAlattas كتب:
اخي حصول Exception هو المطلوب بالضبط في حال كان المسار لملف او مجلد غير موجود اصلاً .

اذا يكفيك هذه الجمله فقط (File.GetAttributes(path وستحصل على Exception فى حالة عدم وجود الملف او المجلد، دون الحاجه الى وجود داله لذلك !

#10

كلامك سليم اخي,,,

يمكننا استخدام طريقة الأخ Moudey بهذا الشكل

public static FileSystemInfo GetFileSystemInfo(string path)
		{
			if ((File.GetAttributes(path) & FileAttributes.Directory) != 0)
			{
				return new DirectoryInfo(path);
			}
			return new FileInfo(path);

		}

بهذا الشكل اظن انها تكون الطريقة الأفضل.

مشكورين يا اخوان.

تم تعديل هذه المشاركة بواسطة HassanAlattas في 5 ديسمبر 2008 في 00:12

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…