بررسی کلاس File
جاوا علاوه بر پکیج io یک پکیج دیگه ای به اسم nio نیز برای کار با فایل ها داره.
داده های یک برنامه به طور موقت در طول زمان اجرای برنامه وجود دارن؛ وقتی برنامه متوقف میشه این داده ها از بین میرن.
برای نگهداری داده ها به طور دائم نیاز داریم اونا رو داخل فضاهای ذخیرهساز دائمی از جمله هارد کامپیوتر یا حافظه های micro-sd و... ذخیره کنیم.
برای این کار میتونیم از پکیج Input Output (IO) و یا کتابخونه ی پایگاه داده در جاوا استفاده کنیم.
کلاس File از کلاس های مهم پکیج io در جاوا است این کلاس اساس همه ی عملیات io است. از این کلاس برای دسترسی به فایل های کامپیوتر، گرفتن اطلاعات فایل و انجام عملیاتی از قبیل تغییر نام، حذف فایل و یا ایجاد پوشه های جدید استفاده میکنیم.
کلاس File متد (تابع) های خوندن و نوشتن رو داده ها رو نداره برای خوندن و نوشتن رو داده ها، از کلاس های دیگه در io استفاده میکنیم.
پکیج io در واقع یکی از پکیج های جاوا است اما در کاتلین هم مورد استفاده قرار میگیره.
در نمودار UML زیر به بررسی کانستراکتور (constructor) و متد (تابع) های پر کاربرد این کلاس پرداختیم:
تعریف مسیر
برای کلاس File در جاوا و کاتلین به دو روش میتونیم مسیر پوشه یا فایل مورد نظر رو تعریف کنیم.
۱- تعریف مسیر کامل که بهش (Absolute Path) میگیم.
۲- تعریف مسیر کوتاه یا خلاصه که بهش (Abstract Path) میگیم.
۱- تعریف مسیر absolute برای File
اگه مسیر تارگت رو به صورت کامل (از روت) تعریف کنیم، بهش مسیر کامل (absolute) میگیم.
فرض کنید در ویندوز داخل درایو c یک پوشه داریم به اسم Music و داخل پوشه یک آهنگ داریم به اسم Haydeh.mp3 مسیر کامل فایل به صورت زیر است:
c:\Music\Haydeh.mp3
چون \ جزو کاراکتر های ویژه تو جاواست، باید دوتا \ قرار بدیم:
new File("c:\\Music\\Haydeh.mp3");
اگه سیستم عامل شبه یونیکس (لینوکس) باشه برای تعریف مسیر absolute باید مانند زیر عمل کنیم:
new File("/home/username/Music/Haydeh.mp3");
۲- تعریف مسیر خلاصه (abstract)
اگه شروع مسیر از پوشه ای باشه که برنامه اجرا شده، بهش مسیر abstract میگیم.
نحوه ی تعریف مسیر abstract در جاوا بین ویندوز و لینوکس مشابه یکدیگر است.
فرض کنید برنامه از یک پوشه قبل از پوشه ی Music اجرا شده، برای تعریف مسیر abstract مانند زیر عمل میکنیم:
new File("Music/Haydeh.mp3");
مورد مطالعه (مثال)
در زیر هرکس میتونه مسیر مورد نظر خودشو بهجای پارامتر کانستراکتور قرار بده.
File file = new File("Path_To_File");
System.out.println("Does it exist? " + file.exists());
System.out.println("Is it Absolute? " + file.isAbsolute());
System.out.println("Absolute path: " + file.getAbsolutePath());
System.out.println("Can it be read? " + file.canRead());
System.out.println("Can it be written? " + file.canWrite());
System.out.println("Is it Hidden? " + file.isHidden());
System.out.println("Is it File? " + file.isFile());
System.out.println("Is it Directory? " + file.isDirectory());
System.out.println("Last modification date: " + java.util.Date(file.lastModified()));
val file = File("Path_To_File");
println("Does it exist? ${file.exists()}");
println("Is it Absolute? ${file.isAbsolute()}");
println("Absolute path: ${file.getAbsolutePath()}");
println("Can it be read? ${file.canRead()}");
println("Can it be written? ${file.canWrite()}");
println("Is it Hidden? ${file.isHidden()}");
println("Is it File? ${file.isFile()}");
println("Is it Directory? ${file.isDirectory()}");
println("Last modification date: ${java.util.Date(file.lastModified())}");
در مثال بالا چندتا از متد های پر کابرد کلاس File رو استفاده کردیم خودتون میتونید متد های دیگه ی این کلاس، که در نمودار UML آورده شده رو بررسی کنید.
خلاصه
- برای خوندن و نوشتن داده ها رو حافظه ی دائمی از پکیج io در جاوا استفاده میکنیم.
- کلاس File اساس همه ی عملیات های io در جاواست از این کلاس برای عملیاتی از جمله تغییر نام، حذف، گرفتن اطلاعات فایل و یا ایجاد پوشه ی جدید استفاده میکنیم.
- کلاس File متد های خوندن و نوشتن روی فایل رو نداره و برای این کار از کلاس های دیگه در پکیج io استفاده میکنیم.
- برای تعریف مسیر تارگت می تونیم به دو روش absolute یا abstract عمل کنیم.