آموزش بیسیک فور اندروید

  آموزش کار با فایل ها و پوشه ها در B4A

با عرض سلام خدمت شما دوستان و همراهان عزیز !

در این قسمت میخواهیم به این موضوع بپردازیم که چگونه با فایل ها و پوشه در بیسیک فور اندروید کار کنیم ! اولین پوشه ای که با آن کار داریم پوشه اصلی فایل های پروژه ( پوشه Files ) میباشد , در واقع فایل هایی که در پروژه از آنها استفاده میکنیم ( تصاویر , دیتابیس , فایل های صوتی و ویدیویی , فایل های متنی و گرافیکی و … ) در این پوشه قرار میگیرند :

همچنین در محیط بیسیک فور اندروید در سمت راست در تب Files Manager میتوانید به فایل های این پوشه دسترسی داشته باشید . با کلیک بر روی گزینه Add Files میتوانید فایلی را به این پوشه اضافه کنید و با گزینه Remove میتوانید فایلی را از این پوشه حذف کنید . گزینه Sync درواقع کار Refresh را انجام میدهد ( وقتی یک فایل را دستی به این پوشه اضافه نموده اید و در پروژه شناسایی نشده است کافیست روی این گزینه کلیک کنید تا فایل در پروژه نمایش داده شود ) :

و اما چگونه از فایل های این پوشه در پروژه استفاده کنیم ؟ این پوشه در کد با نام DirAssets شناسایی میشود و با دستور File.DirAssets میتوانیم به فایل های این پوشه دسترسی داشته باشیم . برای مثال :

ImageView1.Bitmap = LoadBitmap(File.DirAssets,"Image1.jpg") ' نمایش تصویر
Label1.Text = File.ReadString(File.DirAssets,"Text.txt") ' خواندن فایل متنی

به همین شکل میتوانید فایل های موجود در پوشه پروژه را فراخوانی کنید اما برای استفاده از فایل هایی مانند دیتابیس ( که لازم است در آن تغییرات انجام شود ) یا فایل های صوتی و فیلم نمیتوانید از این پوشه استفاده کنید ( یعنی فایل را باید در این پوشه قرار دهید ولی جای دیگر کپی کنید تا بتوانید از آن استفاده کنید )

مطلب پیشنهادی :  آموزش کار با متغیر های رشته ای و عددی

برای مثال فایل دیتابیس را بهتر است در پوشه DirIntenal کپی کنید و از آن استفاده کنید . ابتدا بررسی میکنیم که فایل از قبل وجود دارد یا نه و در صورتی که فایل وجود نداشت آن را کپی میکنیم :

If File.Exists(File.DirInternal,"database.db") = False Then
 File.Copy(File.DirAssets,"database.db",File.DirInternal,"database.db")
End If

در کد بالا ابتدا با دستور File.Exist بررسی کردیم که آیا فایل از قبل وجود دارد یا نه و در صورتی که مقدار False بود ( یعنی فایل وجود نداشت ) با دستور File.Copy فایل دیتابیس ( database.db ) را از DirAssets در DirInternal کپی کردیم .

پوشه DirInternal در واقع پوشه اختصاصی مربوط به برنامه شما میباشد که در حافظه اصلی گوشی ایجاد میشود ولی از طریق فایل منیجر گوشی نمیتوان به آسانی به آن دسترسی داشت , پس بهتر است فایل های جانبی برنامه را در این پوشه کپی کنید .

پوشه Assets و Internal فقط مخصوص برنامه شما هستند و وقتی که بخواهید به حافظه اصلی گوشی دسترسی داشته باشید و فایلی را از آن فراخوانی کنید باید از File.DirRootExternal استفاده کنید . برای مثال در کد زیر میخواهیم یک تصویر را از پوشه دانلود های گوشی کاربر فراخوانی کنیم ودر یک ImageView نمایش دهیم :

ImageView.Bitmap = LoadBitmap(File.DirRootExternal,"Downloads/image.jpg")

اگر به کد بالا دقت داشته باشید ما قبل از نام فایل عبارت “/Downloads” را قرار داده ایم ( یعنی فایل در پوشه Downloads قرار دارد ) و با علامت “/” میتوانید بین پوشه ها جهش داشته باشید .

پس تا اینجا با نحوه فراخوانی فایل ها در برنامه آشنا شدیم ولی اینبار میخواهیم برای برنامه در حافظه اصلی گوشی پوشه ایجاد کنیم به طوری که کاربر نیز به راحتی به آن دسترسی داشته باشد ( برای مثال ویدیو های برنامه را در آن قرار دهیم که به غیر از برنامه خودمان کاربر از طریق گالری و فایل منیجر گوشی بتواند به آنها دسترسی داشته باشد )

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

در کد زیر میخواهیم یک پوشه با نام BasicLearn در حافظه گوشی ایجاد کنیم ولی ابتدا باید بررسی کنیم که پوشه از قبل وجود دارد یا نه ( برای بررسی موجود بودن پوشه مجددا میتوانید از دستور File.Exist استفاده کنید ) :

If File.Exists(File.DirRootExternal&"/BasicLearn/","") Then
 File.MakeDir(File.DirRootExternal,"BasicLearn")
End If

حالا پوشه BasicLearn در حافظه اصلی گوشی ایجاد شده است و میتوانید فایل هایی که لازم است کاربر به آنها دسترسی داشته باشد را در این پوشه کپی کنید :

File.Copy(File.DirAssets,"vid.mp4",File.DirRootExternal&"/BasicLearn/","vid.mp4")

امیدواریم که این آموزش مورد استفاده شما عزیزان قرار گرفته باشد , سوالاتتان را میتوانید در پایین همین صفحه ( در بخش نظرات ) ارسال کنید …

موفق باشید !

ما را در تلگرام دنبال کنید !
BasicLearn@

درباره نویسنده

حامد باقری

برنامه نویس اندروید , طراح وب , طراح گرافیک و رابط کاربری
( مدیر مجموعه بیسیک لرن )
www.HamedBagheri.ir

۴ نظر

  • سلام.. من یه گالری میخوام بسازم که هر عکسی که مثلا توی حافظه داخلی گوشیم هست حالا چه تو پوشه Downloads باشه یا یک پوشه دیگه رو نشون بده مثل گالری پیشفرض خود گوشی توی این ضمینه اگه میتونید یه سری راهنمایی کنید ممنون

    • سلام . اگر منظورتون اینه که میخواهید تصویر یک ImageView را ذخیره کنید میتوانید از کد زیر استفاده کنید :
      Dim bmp As Bitmap = ImageView1.Bitmap
      bmp.WriteToStream(File.OpenOutput(File.DirRootExternal,"FileName.png",False),100,"PNG")

نظر بدهید

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