التعامل مع الملفات File Handling
نحفظ البيانات في ملفات تبقى بعد إغلاق البرنامج، ثم نقرؤها لاحقًا.
- تستخدم الكلاس 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[] | أسماء الملفات داخل مجلد |
٢إنشاء ملف
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("حدث خطأ"); } }}
نفّذه مرة ثانية فيطبع «الملف موجود مسبقًا». الكتلة try/catch إلزامية لأن createNewFile قد تطلق IOException، وهو Checked.
٣الكتابة إلى ملف
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("حدث خطأ"); } }}
٤قراءة ملف
نستخدم الكلاس Scanner لكن نمرّر له الملف بدل لوحة المفاتيح، ونقرأ سطرًا سطرًا ما دام هناك سطر تالٍ:
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("حدث خطأ"); } }}
٥معلومات الملف
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 لكل جزء.
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) القراءة }}
💡 تلميح 1
💡 تلميح 2
حاول بنفسك أولًا.
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؟
ما الذي يقرأ سطرًا من ملف داخل حلقة؟
كيف تضيف إلى آخر الملف دون مسح محتواه؟
الخلاصة
- File يمثّل الملف ويعطي معلوماته وينشئه ويحذفه.
- FileWriter للكتابة، ولا بد من close().
- Scanner مع File و hasNextLine() للقراءة سطرًا سطرًا.
- عمليات الملفات تطلق استثناءات Checked، فتحتاج try/catch.