رفتن به مطلب
بخش Unity به انجمن اضافه شد
  • 0

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


morteza520

سوال

با سلام 

 

۱.چطور میتونم محتویات داخل یه پوشه یا پوشه هایی که داخل یه پوشه دیگه هستش رو قبل از اینکه وارد اون پوشه بشم به دست بیارم.

منظورم اینه که مثلا چند تا فایل داخل پوشه هستش و فرمت این فایل ها چیه و یا اینکه داخل این پوشه مد نظر پوشه های دیگه هم هست یا نه، اگه هست محتویات داخل اونا چیه.

 

 

۲. و اینکه چطوری میشه فهمید که یه فایل موجود، یه پوشه هستش یا مثلا یه موزیک؟

 

امیدوارم که تونسته باشم منظورم رو برسونم.

 

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

9 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 1 ساعت قبل، morteza520 گفته است :

ممنون اگه میشه پست بعدی که گفتید رو هم بذارید

سلام. شرمنده، خوب شد گفتید. پاک یادم رفته بود.

Sub getextension(s As String) As String
	Dim text, pattern As String
	text = s
	pattern = "^(.*)\.([^.]+)$"
	Dim Matcher1 As Matcher
	Matcher1 = Regex.Matcher(pattern, text)
	If Matcher1.Find Then
		Return Matcher1.Group(2).ToLowerCase
	Else
		Return ""
	End If
End Sub

با یه تابعی مثل تابع بالا می تونید پسوند و نوع فایل رو به دست بیارید.

اگه فایل پسوند نداشته باشه مقدار "" برگردونده میشه.

کد بالا روی مقادیر زیر تست شده

معمولی
aaa.jpg
aaa.bbb.ccc.jpg
بدون پسوند
aaaa
aaaa.
بدون نام
.aaaa
.htaccess

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد زیر میاد ادرس تمام فایل های jpg در پوشه مورد نظر و پوشه های موجود در پوشه ی مورد نظر (پوشه های تو در توی حاوی فایل) رو به دست میاره و میریزه داخل یک لیست. (سایز لیست تعداد فایل ها رو نشون میده)

کافیه همین کد رو مقداری تعییر بدید تا بتونید ازش استفاده های دیگه هم بکنید.

 

اگه با توابع بازگشتی کار نکرده باشید مثال زیر ممکنه یک ذره پیچیده به نظر بیاد ولی کمی دقت کنید می بینید خیلی ساده هستش.

تابع بازگشتی : تابعی که خودش رو داخل خودش دوباره صدا میزنه  (به مثال دقت کنید)

نکنه: در هنگم کار با توابع بازگشتی باید حواستون باشه یک شرط بزارید تا این صدا زدن به صورت نامحدود ادامه پیدا نکنه.

کد اشتباه
myfunction(25)
sub myfunction(i as int)
	myfunction(i+1)
end sub

روش صحیح
myfunction(25)
sub myfunction(i as int)
  if i < 100 then
  	myfunction(i+1)
  end if
end sub

در این مثال کاربرد توابع بازگشتی , listFile و isDirectory به خوبی نمایش داده شده.

برای تست بهتره از فایل های jpg و پوشه هایی با نام کوتاه استفاده کنید که ادرسش داخل لیست ویوو جا بشه.

 

در پروزه های واقعی از اونجایی که ممکنه تعداد فایل ها و پوشه ها زیاد بشه بنظرم بهتره از ترد دیگه ای استفاده کنید.

extension یا پسوند فایل رو هم میشه با یک تابع ساده بدست اورد که اون رو در پست بعدی قرار خواهم داد.

Sub Process_Globals
	
End Sub

Sub Globals
	Dim list As List
	
	Private Button1 As Button
	Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("layout1")
	list.Initialize
	ListView1.SingleLineLayout.Label.TextSize = 14
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)
	
End Sub

Sub Button1_Click
	
	list.Clear
	ListView1.Clear
	
	Dim fd As String = File.DirRootExternal & "/test"
	rfunc(fd)
	
	Msgbox(list.Size,"list.size")
	
	For i=0 To list.Size - 1
		ListView1.AddSingleLine(list.Get(i))
		Log(list.Get(i))
	Next
	
End Sub

Sub rfunc (fd As String)
	
	Dim listFF As List
	listFF = File.ListFiles(fd)
	
		For i = 0 To listFF.Size - 1
			
			Dim FF As String = listFF.Get(i)
			
			If File.IsDirectory(fd,FF) Then
				rfunc(fd & "/" & FF)
			Else
				If Regex.IsMatch2(".*\.jpg$",Regex.CASE_INSENSITIVE,FF) Then
					list.Add(fd & "/" & FF)
				End If
			End If
			
		Next
	
End Sub

 

-------------------------------------------------------------

Dim list As List

لیست فایل های jpg پیدا شده

 

Dim listFF As List

لیست فایل ها و فولدر ها در پوشه مورد بررسی توسط تابع

 

Dim FF As String = listFF.Get(i)

نام فایل یا پوشه

 

If File.IsDirectory(fd,FF) Then

Else

End If

بررسی پوشه یا فایل بودن FF در حال بررسی

 

 

If Regex.IsMatch2(".*\.jpg$",Regex.CASE_INSENSITIVE,FF) Then
    list.Add(fd & "/" & FF)
End If

بررسی jpg بودن فایل و افزودن اون به لیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام منظور رو نگرفتم ولی میتونید از کتابخونه File Chooser به دست آقای زعفرانی استفاده کنید

لینک دانلود : دانلود کتابخانه + مثال

اگر مشکلتون حل شد تشکر یادتون نره

♥

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 45 دقیقه قبل، Hamidreza233 گفته است :

سلام منظور رو نگرفتم ولی میتونید از کتابخونه File Chooser به دست آقای زعفرانی استفاده کنید

لینک دانلود : دانلود کتابخانه + مثال

اگر مشکلتون حل شد تشکر یادتون نره

♥

نه منظورم اینجوری نبود

منظورم این بود که تعداد محتویات و نوع فایل داخل پوشه رو قبل از اینکه وارد اون پوشه شد به دست اورد و مثلا تو یه لیبل نمایش داد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببیند مثلا تو برنامه mx player اگه دیده باشید تو مدل نمایش (پوشه) نشون میده که چند تا ویدیو و پوشه داخل پوشه فیلم هستش

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود یه پوشه رو که کاربر انتخاب کنه ؟ یا از قبل شما بهش آدرس پوشه رو بدید ؟ 

یا اینکه اصن میخواید فایل منیجر درست کنید ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام از متد های File که بصورت پیشفرص داخل بیسیک موجوده استفاده کنید. مثل ListFiles یا IsDirectory

برای پردازش و خوندن تمام فایل های پوشه های تو در تو هم معمولا از توابع بازگشتی استفاده می کنند. بعدا اگه فرصت کردم کدش رو باستون مینویسم.

البته اگه منظورتون رو درست فهمیده باشم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 3 ساعت قبل، rasool.g گفته است :

سلام از متد های File که بصورت پیشفرص داخل بیسیک موجوده استفاده کنید. مثل ListFiles یا IsDirectory

برای پردازش و خوندن تمام فایل های پوشه های تو در تو هم معمولا از توابع بازگشتی استفاده می کنند. بعدا اگه فرصت کردم کدش رو باستون مینویسم.

البته اگه منظورتون رو درست فهمیده باشم.

ممنون

اگه اینکارو بکنید لطف کردین.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...