Java الكلاس File في جافا

الكلاس File يمثل جميع أنواع الملفات و المجلدات و المسارات.
يستخدم هذا الكلاس لفحص الملفات, المجلدات, البحث عن ملفات, مسح ملفات إلخ..

كائن الـ File الذي تقوم بإنشاءه, يمثل ملف أو مجلد معين موجود في الجهاز.


الكلاس File يحتوي على الـ constructors المذكورين في الجدول التالي.

الكونستركتور مع تعريفه
public File(File parent, String child) ينشئ كائن جديد من الـ File الموجود في المسار parent, و الذي إسمه child.
public File(String pathname) ينشئ كائن جديد من الـ File الذي يشير إليه الـ pathname.
public File(String parent, String child) ينشئ كائن جديد من الـ File الموجود في المسار parent, و الذي إسمه child.
public File(URI uri) ينشئ كائن جديد من الـ File الذي يشير إليه الـ uri.


بعد أن يصبح كائن الـ File جاهزاً, يمكنك إستخدام الكثير من الدوال الجاهزة لقراءة الملف أو لفعل أي شيء آخر.

الدالة مع تعريفها
public String getName() ترجع إسم الملف أو المجلد الذي يشير إليه مسار كائن الـ File الذي قام باستدعائها.
public String getParent() ترجع المسار الأب للملف أو المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها كـ String.
أو ترجع null إذا كان المسار الموضوع غير موجود.
public File getParent() ترجع المسار الأب للملف أو المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها كـ File.
أو ترجع null إذا كان المسار الموضوع غير موجود.
public String getPath() تحول المسار الذي يشير إليه كائن الـ File الذي قام باستدعائها إلى String.
public boolean isAbsolute() تختبر المسار الذي يشير إليه كائن الـ File الذي قام باستدعائها لمعرفة إذا كان absolute أم لا.
ترجع true إذا كان absolute و ترجع false إذا لم يكن كذلك.
public String getAbsolutePath() ترجع المسار الـ absolute للمسار الذي يشير إليه كائن الـ File الذي قام باستدعائها.
public boolean canRead() تختبر إذا كان البرنامج يقدر أن يقرأ من الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها.
ترجع true إذا كان الملف موجود و يمكن قراءته. غير ذلك ترجع false.
public boolean canWrite() تختبر إذا كان البرنامج يقدر أن يكتب في الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها.
ترجع true إذا كان الملف موجود و يمكن الكتابة فيه. غير ذلك ترجع false.
public boolean exist() تختبر إذا كان الملف أو المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها موجوداً أم لا.
ترجع true إذا كان الملف موجود. غير ذلك ترجع false.
public boolean isFile() تختبر إذا كان الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها هو ملف عادي (normal file) أم لا.
ملف عادي تعني ليس مجلد, أي ليس directory. أي ملف عادي تم إنشائه من خارج تطبيقات جافا يعتبر مباشرةً ملف عادي.
ترجع true إذا كان الملف موجود و إذا لم يكن directory. غير ذلك ترجع false.
public boolean isDirectory() تختبر إذا كان الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها هو مجلد (directory) أم لا.
ترجع true إذا كان الملف موجود و إذا كان directory. غير ذلك ترجع false.
public long lastModified() ترجع وقت آخر مرة تم فيها تعديل الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها. الوقت الذي ترجعه هو وقت بالـ milliseconds منذ ( 1/1/1970 00:00:00 GMT ), أو ترجع 0L إذا كان الملف غير موجود أو في حال حدوث أي خطأ.
public long length() ترجع طول الملف الذي يشير إليه مسار كائن الـ File الذي قام باستدعائها بالـ bytes. و ترجع 0L إذا لم يكن الملف موجود أو إذا كان المسار يشير إلى مجلد.
public boolean createNewFile() throws IOException تنشئ ملف جديد فارغ في المسار الذي يشير إليه كائن الـ File في حال كان لا يشير إلى ملف موجود أصلاً.
ترجع true إذا كان الملف غير موجود و إذا تم إنشاءه بنجاح. غير ذلك ترجع false.
public boolean delete() تمسح الملف أو المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها. إذا كان المجلد فارغاً يجب أن يكون فارغاً حتى يتم مسحه.
ترجع true إذا تم مسح الملف أو المجلد. غير ذلك ترجع false.
public void deleteOnExit() ترسل طلب إلى الـ JVM يقضي بمسح الملف أو المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها عند الإنتهاء من تنفيذ أوامر البرنامج.
public String[] list() ترجع مصفوفة نوعها String تحتوي على أسماء الملفات و المجلدات الموجودة في المسار الذي يشير إليه كائن الـ File الذي قام باستدعائها.
public File[] listFiles() ترجع مصفوفة نوعها File تحتوي على مسارات جميع الملفات و المجلدات الموجودة في المسار الذي يشير إليه المجلد الذي يشير إليه كائن الـ File الذي قام باستدعائها.
public boolean mkdir() تنشئ مجلد في المسار الذي يشير إليه كائن الـ File.
ترجع true إذا تم إنشاء الملف. غير ذلك ترجع false.
public boolean mkdirs() تنشئ مجلد في المسار الذي يشير إليه كائن الـ File الذي قام باستدعائها.
هنا في حال كان المسار الموضوع غير موجود ستقوم هي بإنشاءه. أي ستنشئ جميع المجلدات الموضوعة في المسار.
ترجع true إذا تم إنشاء الملف. غير ذلك ترجع false.
public boolean renameTo(File dest) تستخدم لإعطاء إسم جديد للملف الذي يشير إليه كائن الـ File الذي قام باستدعائها. الإسم الذي يعطى للكائن dest هو الإسم الجديد الذي سيعطى للملف.
ترجع true إذا تمت العملية بنجاح. غير ذلك ترجع false.
public boolean setLastModified(long time) تستخدم لتغيير آخر وقت تم فيه تعديل الملف يشير إليه كائن الـ File الذي قام باستدعائها.
ترجع true إذا تمت العملية بنجاح. غير ذلك ترجع false.
public boolean setReadOnly() تستخدم لجعل الملف الذي يشير إليه كائن الـ File الذي قام باستدعائها يملك صلاحية الـ read only. هذه الصلاحية تمنع أي عملية تعديل أو كتابة في الملف و تسمح فقط بقراءة محتواه.
ترجع true إذا تمت العملية بنجاح. غير ذلك ترجع false.
public static File createTempFile(String prefix, String suffix, File directory) throws IOException تستخدم لإنشاء ملف مؤقت, أي ملف يتم مسحه تلقائياً عند إنتهاء الـ JVM من تنفيذ أوامر البرنامج.
prefix هو إسم الملف الذي سيتم إنشاءه, suffix هو نوع الملف الذي سيتم إنشاءه. directory هو الذي سيتم إنشاء الملف فيه.
ترجع مسار الملف الذي تم إنشاءه.
public static File createTempFile(String prefix, String suffix) throws IOException تستخدم لإنشاء ملف مؤقت, أي ملف يتم مسحه تلقائياً عند إنتهاء الـ JVM من تنفيذ أوامر البرنامج.
الملف هنا يتم إنشاءه في المكان الذي تحفظ فيه الملفات الإفتراضية على الجهاذ.
prefix هو إسم الملف الذي سيتم إنشاءه, suffix هو نوع الملف الذي سيتم إنشاءه.
ترجع مسار الملف الذي تم إنشاءه.
public int compareTo(File pathname) تقارن أحرف مسارين مع بعض. أي مسار الكائن الذي قام باستدعاءها مع مسار الكائن pathname.
ترجع 0 إذا كان مسار الكائن الذي قام باستدعاءها يساوي مسار الكائن pathname.
ترجع عدد أصغر من 0 إذا كان مسار الكائن الذي قام باستدعاءها أكبر من مسار الكائن pathname.
ترجع عدد أكبر من 0 إذا كان مسار الكائن الذي قام باستدعاءها أصغر من مسار الكائن pathname.
public int compareTo(Object obj) تقارن أحرف مسارين مع بعض. أي مسار الكائن الذي قام باستدعاءها مع مسار أي كائن نضعه كـ argument.
ترجع 0 إذا كان مسار الكائن الذي قام باستدعاءها يساوي مسار الكائن obj.
ترجع عدد أصغر من 0 إذا كان مسار الكائن الذي قام باستدعاءها أكبر من مسار الكائن obj.
ترجع عدد أكبر من 0 إذا كان مسار الكائن الذي قام باستدعاءها أصغر من مسار الكائن obj.
public boolean equals(Object obj) تختبر الكائن الذي قام باستدعاءها مع أي كائن نضعه كـ argument.
ترجع true إذا كانت قيمة الكائنين لا تساوي null و إذا كان الكائنين عندهم نفس المسار سواء كان يشير إلى ملف أو إلى مجلد. غير ذلك ترجع false.
public String toString() ترجع إسم الملف أو المجلد الذي يشير إليه مسار كائن الـ File الذي قام باستدعائها كـ String.
و هي مثل الدالة getPath().


مثال

في هذا المثال سنقوم بإنشاء كائن نوعه File يشير إلى ملف معين, ثم سنعرض فقط بعض خصائص هذا الملف.

Main.java
import java.io.File;
 
public class Main {
 
    public static void main(String[] args) {
 
        // File هنا قمنا بإنشاء كائن نوعه
        File f = null;
 
        try {
 
            // f هنا قمنا بتحديد الملف الذي يشير إليه الكائن
            f = new File("C:\\MyFiles\\input.txt");
 
            // يشير إلى ملف أو مجلد موجود سيتم عرض جميع خصائصه f هنا قلنا إذا كان الكائن
            if(f.exists()) {
                System.out.println("File name:              " +f.getName());
                System.out.println("File length:            " +f.length());
                System.out.println("File parent path:       " +f.getParent());
                System.out.println("File absolute path:     " +f.getAbsolutePath());
                System.out.println("File read permission:   " +f.canRead());
                System.out.println("File write permission:  " +f.canWrite());
 
                // يشير إلى مجلد, سيتم عرض جميع الأشياء الموجودة بداخله f هنا قلنا إذا كان الكائن
                if (f.isDirectory()) {
                    System.out.println("\n" +f.getName()+ " contains:");
                    File files[] = f.listFiles();
                    for(int i=0; i<files.length; i++) {
                        System.out.println((i+1)+") "+files[i].getName());
                    }
                }
            }
            // لا يشير لأي ملف أو مجلد موجود سيعرض أن الملف غير موجود f هنا قلنا إذا كان الكائن
            else {
                System.out.println("File not exists!");
            }
 
        }
        catch(Exception e) {
            System.out.println("There is Exception!");
        }
 
    }
 
}
		

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

File name:              input.txt
File length:            70
File parent path:       C:\MyFiles
File absolute path:     C:\MyFiles\input.txt
File read permission:   true
File write permission:  true 
		

في حال قمنا بتغيير مسار الكائن f لجعله يشير إلى المجلد MyFiles, سنحصل على النتيجة التالية عند التشغيل.

File name:              MyFiles
File length:            4096
File parent path:       C:\
File absolute path:     C:\MyFiles
File read permission:   true
File write permission:  true

MyFiles contains:
1) input.txt
2) intro.MP4
3) hacker song.MP3
4) output.txt
5) folder 1
6) folder 2 
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة