بررسی کلاس File
جاوا علاوه بر پکیج io یک پکیج دیگه ای به اسم nio نیز برای کار با فایل ها داره.
داده های یک برنامه به طور موقت در طول زمان اجرای برنامه وجود دارن؛ وقتی برنامه متوقف میشه این داده ها از بین میرن.
برای نگهداری داده ها به طور دائم نیاز داریم اونا رو داخل فضاهای ذخیرهساز دائمی از جمله هارد کامپیوتر یا حافظه های micro-sd و... ذخیره کنیم.
برای این کار میتونیم از پکیج Input Output (IO) و یا کتابخونه ی پایگاه داده در جاوا و کاتلین استفاده کنیم.
کلاس File از کلاس های مهم پکیج io در جاوا و کاتلین است این کلاس اساس همه ی عملیات io است. از این کلاس برای دسترسی به فایل های کامپیوتر، گرفتن اطلاعات فایل و انجام عملیاتی از قبیل تغییر نام، حذف فایل و یا ایجاد پوشه های جدید استفاده میکنیم.
کلاس File متد (تابع) های خوندن و نوشتن رو داده ها رو نداره برای خوندن و نوشتن رو داده ها، از کلاس های دیگه در io استفاده میکنیم.
پکیج io در واقع یکی از پکیج های جاوا است اما در کاتلین هم مورد استفاده قرار میگیره.
در نمودار UML زیر به بررسی سازنده (constructor) و متد (تابع) های پر کاربرد این کلاس پرداختیم:
| java.io.File | |
|---|---|
| +File(String) | یک نمونه از کلاس File ایجاد می کنه و مقدار String مسیر فایل یا پوشه ی مد نظر است. |
| +File(String,String) | یک نمونه از کلاس File ایجاد می کنه پارامتر ها از چپ parent مسیر پوشه ها و child مسیر پوشه یا فایل داخل parent است. |
| +File(URI) | یک نمونه از File بر اساس uri توسط کلاس URI در جاوا و کاتلین ایجاد میکنه. |
| +exists(): boolean | بررسی میکنه آیا فایل در مسیر تعریف شده وجود داره یا خیر |
| +canRead(): boolean | بررسی میکنه آیا فایل قابل خوندن هست یا خیر. |
| +canWrite(): boolean | بررسی میکنه آیا فایل قابل نوشتن هست یا خیر. |
| +isDirectory(): boolean | بررسی می کنه فایل پوشه هست یا خیر. |
| +isFile(): boolean | بررسی میکنه نوع فایل در مسیر تعریف شده فایل هست یا خیر. |
| +isHidden(): boolean | بررسی میکنه فایل مخفیه یا نه. |
| +isAbsolute(): boolean | بررسی میکنه مسیر تعریف شده برای فایل یک مسیر کامل هست یا خیر. |
| +getAbsolutePath(): String | مقدار مسیر کامل رو به صورت String بر میگردونه. |
| +getPath(): String | مقدار مسیر رو به صورت String بر می گردونه. |
| +getName(): String | اسم فایل رو به صورت String بر میگردونه. |
| +getParent(): String | مسیر پوشه ای که فایل داخلش قرار داره رو به صورت String بر میگردونه. |
| +listFiles(): File[] | اگه مسیر تعریف شده برای کلاس File پوشه باشه یک لیست از محتوای داخل پوشه به صورت آرایه ای از نوع File بر میگردونه. |
| +list(): String[] | اگه مسیر تعریف شده یک پوشه باشه آرایه ای از اسم فایل ها و پوشه های داخلشو به صورت String بر میگردونه. |
| +delete(): boolean | فایل در مسیر تعریف شده رو حذف میکنه و اگه انجام بشه مقدار true بر میگردونه. (اگه پوشه باشه باید محتوای داخل پوشه قبل از حذف پوشه حذف بشن). |
| +mkdir(): boolean | یک پوشه در مسیر تعریف شده ایجاد میکنه و اگه انجام بشه true بر میگردونه. |
| +mkdirs(): boolean | یک یا چند پوشه در صورت عدم وجود در مسیر تعریف شده ایجاد میکنه و اگه انجام بشه true بر میگردونه. |
| +lastModified(): long | تاریخ اخرین تغییرات در فایل رو به صورت long بر میگردونه. |
| +renameTo(File): boolean | فایل موجود رو تغییر نام میده و اگه انجام بشه true بر میگردونه. |
تعریف مسیر
برای کلاس File در جاوا و کاتلین و کاتلین به دو روش میتونیم مسیر پوشه یا فایل مورد نظر رو تعریف کنیم.
۱- تعریف مسیر کامل که بهش (Absolute Path) میگیم.
۲- تعریف مسیر کوتاه یا خلاصه که بهش (Abstract Path) میگیم.
۱- تعریف مسیر absolute برای File
اگه مسیر تارگت رو به صورت کامل (از روت) تعریف کنیم، بهش مسیر کامل (absolute) میگیم.
فرض کنید در ویندوز داخل درایو c یک پوشه داریم به اسم Music و داخل پوشه یک آهنگ داریم به اسم Haydeh.mp3 مسیر کامل فایل به صورت زیر است:
c:\Music\Haydeh.mp3
چون \ جزو کاراکتر های ویژه تو جاواست، باید دوتا \ قرار بدیم:
new File("c:\\Music\\Haydeh.mp3");
//Kotlin
File("c:\\Music\\Haydeh.mp3")
اگه سیستم عامل شبه یونیکس (لینوکس) باشه برای تعریف مسیر absolute باید مانند زیر عمل کنیم:
new File("/home/username/Music/Haydeh.mp3");
//Kotlin
File("/home/username/Music/Haydeh.mp3")
۲- تعریف مسیر خلاصه (abstract)
اگه شروع مسیر از پوشه ای باشه که برنامه اجرا شده، بهش مسیر abstract میگیم.
نحوه ی تعریف مسیر abstract در جاوا و کاتلین بین ویندوز و لینوکس مشابه یکدیگر است.
فرض کنید برنامه از یک پوشه قبل از پوشه ی Music اجرا شده، برای تعریف مسیر abstract مانند زیر عمل میکنیم:
new File("Music/Haydeh.mp3");
//Kotlin
File("Music/Haydeh.mp3")
مورد مطالعه (مثال)
در زیر هرکس میتونه مسیر مورد نظر خودشو بهجای پارامتر سازنده (constructor) قرار بده.
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 عمل کنیم.
بازخورد و دیدگاه ها
اولین نفری باشید که در این صفحه نظر میدهید