الوحدة 5: الأخطاء والملفات · الموضوع 12 من 17
الموضوع 12

التعامل مع الملفات File Handling

نحفظ البيانات في ملفات تبقى بعد إغلاق البرنامج، ثم نقرؤها لاحقًا.

filename.txt FileWriterScanner
بعد هذا الدرس ستستطيع أن:
  • تستخدم الكلاس File لإنشاء ملف ومعرفة معلوماته.
  • تكتب نصًّا إلى ملف باستخدام FileWriter، وتغلقه بعد الكتابة.
  • تقرأ محتوى ملف سطرًا سطرًا باستخدام Scanner.
  • تعالج استثناءات الملفات باستخدام try و catch.

١الكلاس File

من الحزمة java.io. ننشئ منه كائنًا يمثّل ملفًا أو مجلدًا: File myObj = new File("filename.txt");

الدالةتعيدالوصف
createNewFile()booleanتنشئ ملفًا فارغًا؛ true إن أُنشئ و false إن كان موجودًا
exists()booleanهل الملف موجود؟
getName()Stringاسم الملف
getAbsolutePath()Stringالمسار الكامل
canRead() / canWrite()booleanهل يمكن القراءة/الكتابة؟
length()longالحجم بالبايت
delete()booleanيحذف الملف
mkdir()booleanينشئ مجلدًا
list()String[]أسماء الملفات داخل مجلد

٢إنشاء ملف

to.java
import java.io.File;  // Import the File class// Import the IOException class to handle errorsimport java.io.IOException;public class Main {    public static void main(String[] args) {        try {            File myObj = new File("filename.txt");            if (myObj.createNewFile()) {                System.out.println("تم إنشاء الملف: " + "\n" + myObj.getName());                System.out.println("في المسار: " + "\n" + myObj.getAbsolutePath());            } else {                System.out.println("الملف موجود مسبقًا");            }        } catch (IOException e) {            System.out.println("حدث خطأ");        }    }}
Output – (run)×
run:
تم إنشاء الملف:
filename.txt
في المسار:
C:\Users\…\filename.txt
BUILD SUCCESSFUL (total time: 0 seconds)

نفّذه مرة ثانية فيطبع «الملف موجود مسبقًا». الكتلة try/catch إلزامية لأن createNewFile قد تطلق IOException، وهو Checked.

٣الكتابة إلى ملف

Main.java
import java.io.FileWriter;import java.io.IOException;import java.util.Scanner; public class Main{    public static void main(String[] args)    {        Scanner input = new Scanner(System.in);        try        {            FileWriter myWriter = new FileWriter("filename.txt");            System.out.println("أدخل اسمك");            String name = input.nextLine();            myWriter.write(name);            myWriter.close();            System.out.println("تم كتابة اسمك بنجاح");        }        catch (IOException e)        {            System.out.println("حدث خطأ");        }    }}
Output – JavaApplication (run)×
run:
أدخل اسمك
تم كتابة اسمك بنجاح
BUILD SUCCESSFUL (total time: 0 seconds)

٤قراءة ملف

نستخدم الكلاس Scanner لكن نمرّر له الملف بدل لوحة المفاتيح، ونقرأ سطرًا سطرًا ما دام هناك سطر تالٍ:

to.java
import java.io.File;import java.io.FileNotFoundException;// Import the Scanner class to read text filesimport java.util.Scanner;public class Main {    public static void main(String[] args) {        String data;        try {            File myObj = new File("filename.txt");            Scanner myReader = new Scanner(myObj);            while (myReader.hasNextLine()) {                data = myReader.nextLine();                System.out.println(data);            }            myReader.close();        }        catch (FileNotFoundException e) {            System.out.println("حدث خطأ");        }    }}

٥معلومات الملف

Main.java
import java.io.File;public class Main {    public static void main(String[] args) {        File myObj = new File("filename.txt");        if (myObj.exists()) {            System.out.println("File name: " + myObj.getName());            System.out.println("Absolute path: " + myObj.getAbsolutePath());            System.out.println("Writeable: " + myObj.canWrite());            System.out.println("Readable " + myObj.canRead());            System.out.println("File size in bytes " + myObj.length());        }        else {            System.out.println("The file does not exist.");        }    }}

جرّب هذه الأمثلة بالترتيب في NetBeans: إنشاء ثم كتابة ثم قراءة ثم معلومات؛ فكل مثال يعتمد على الملف الذي أنشأه الذي قبله.

٦مسار الملف

النظامالصيغة
ويندوزتُضاعف الشرطة المائلة الخلفية: "C:\\Users\\Name\\file.txt"
ماك ولينكسشرطة أمامية واحدة: "/Users/name/file.txt"

تحدٍّ برمجي: اكتب اسمك ثم اقرأه

مبني على أمثلة الدرس

اجمع مثالَي الكتابة والقراءة من الدرس في برنامج واحد.

المطلوب:
  • اقرأ الاسم من المستخدم واكتبه في filename.txt (مثال الكتابة).
  • ثم اقرأ الملف واطبع محتواه (مثال القراءة).
  • استخدم try/catch لكل جزء.
Main.java
import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        // 1) الكتابة         // 2) القراءة     }}
Output – المطلوب×
ادخل اسمك
تم كتابة اسمك بنجاح
Ahmed
💡 تلميح 1
انسخ مثال الكتابة كما هو أولًا.
💡 تلميح 2
للقراءة: new Scanner(new File("filename.txt")) ثم حلقة while مع hasNextLine().

حاول بنفسك أولًا.

Main.java
import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        // 1) الكتابة        try {            FileWriter myWriter = new FileWriter("filename.txt");            System.out.println("ادخل اسمك");            String name = input.nextLine();            myWriter.write(name);            myWriter.close();            System.out.println("تم كتابة اسمك بنجاح");        } catch (IOException e) {            System.out.println("حدث خطأ");        }        // 2) القراءة        try {            Scanner myReader = new Scanner(new File("filename.txt"));            while (myReader.hasNextLine()) {                System.out.println(myReader.nextLine());            }            myReader.close();        } catch (IOException e) {            System.out.println("حدث خطأ");        }    }}

توقّع وتحقّق

أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.

الحزمة التي فيها File و FileWriter:

لماذا نضع createNewFile داخل try؟

ما الذي يقرأ سطرًا من ملف داخل حلقة؟

كيف تضيف إلى آخر الملف دون مسح محتواه؟

الخلاصة

انتقل إلى تقييم الدرسأسئلة التقييم، وأكمل الفراغات.ابدأ التقييم ←
أنهيت وحدة «الأخطاء والملفات»ثبّت ما تعلّمته بأسئلة مراجعة لمواضيع الوحدة.ابدأ المراجعة ←