جاري التحميل...

قراءة ملف في Java

جهّز ملفًا نصيًا بسيطًا باسم note.txt في نفس مجلد البرنامج. ضع بداخله سطرًا قصيرًا: oak. افتح Reader.java، وأنشئ File لـ note.txt، ولفّه داخل Scanner، واطبع nextLine()، ثم close للماسح. ترجم بـ javac Reader.java وشغّل java Reader. يجب أن تظهر الشاشة oak. عرض ثانٍ يفتح missing.txt بدلًا من ذلك ويتوقف مع FileNotFoundException. اترك كتابة الملف بـ Java للصفحة التالية — أنشئ note.txt يدويًا في محرر لهذا الدرس.

اقرأ سطرًا موجودًا مسبقًا على القرص

توقفت الصفحات السابقة عند استثناءات التقطتها أو رميتها. هذه الصفحة تصل إلى حروف تبقى في ملف بعد انتهاء البرنامج. افتح ملف تدريس باسم Reader.java. أبقِ اسم الفئة العامة Reader ليطابق اسم الملف. احذف عروض رمي Signal المتبقية، وكتل catch الخاصة بـ Guard، وتوقفات مصفوفة Alarm، وأي Scanner يقرأ من System.in بلوحة المفاتيح عبر nextLine. يجب ألا ينتظر البرنامج الكتابة. قراءة الملف ما زالت تستخدم Scanner، لكن المُنشئ يأخذ File وليس لوحة المفاتيح.
تحتاج قرب أعلى الملف إلى ثلاثة أسطر import:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
علّم main بـ throws FileNotFoundException حتى يظهر الملف المفقود كاستثناء checked. داخل main سمِّ ملف القرص:
File note = new File("note.txt");
ابنِ ماسحًا على ذلك الملف:
Scanner scan = new Scanner(note);
اطبع السطر الأول:
System.out.println(scan.nextLine());
ثم أنهِ القراءة:
scan.close();
قبل الترجمة، أنشئ note.txt بجانب Reader.java واكتب بالضبط oak في السطر الأول. احفظ الملف النصي. برنامج Java لا ينشئ هذا الملف النصي في هذه الصفحة.

Reader prints oak from note.txt

java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Reader {
    public static void main(String[] args) throws FileNotFoundException {
        File note = new File("note.txt");
        Scanner scan = new Scanner(note);
        System.out.println(scan.nextLine());
        scan.close();
    }
}

من المجلد الذي يحوي Reader.java وnote.txt معًا، نفّذ javac Reader.java. عندما تتطابق الأقواس والأقواس المعقوفة والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم شغّل java Reader — لا java Reader.java. احذف لاحقة .java من أمر التشغيل. إن لم يجد javac نوع File أو Scanner، فأسطر import ناقصة أو مكتوبة خطأ — أعدها قبل مطاردة أخطاء أخرى.
تظهر الشاشة oak. الماسح قرأ السطر الأول من ملف القرص وطبعه. لا ينبغي أن يتوقف البرنامج لإدخال لوحة المفاتيح. إن انتظرت الطرفية أن تكتب، فما زلت توصّل Scanner بـ System.in بدل File note. صحّح المُنشئ ليأخذ الـ File. إن رأيت empty أو تتبعًا من IllegalArgumentException، فبقايا عرض Signal ما زالت تعمل — انتقل إلى java Reader بملف تدريس القراءة. إن رأيت 2 أو blocked، فعرض Alarm أو Guard القديم ما زال هو الصنف الذي تشغّله.
امشِ مسار النجاح مرة. يبدأ Java عند Reader.main. كائن File يحمل الاسم note.txt. Scanner يفتح ذلك الاسم. nextLine يجلب السطر الأول. println يعرض oak. close ينهي الماسح. لا ينبغي طباعة شيء آخر. إن لم يكن note.txt في المجلد، ستصل مبكرًا لقصة الملف المفقود — أنشئ الملف النصي أولًا ثم أعد التشغيل.
هنا nextLine يعني السطر التالي في الملف، لا مطالبة للمستخدم. إعادة استخدام اسم الدالة بعد صفحة الإدخال تربك بسهولة. أبقِ القصة واضحة: نفس الاسم، مصدر مختلف. حروف oak تعيش في الملف النصي؛ صنف Java يقرؤها فقط.

📊 File and Scanner roles

Piece What it does on this page
File holds the disk name such as note.txt
Scanner reads lines from that File with nextLine
close finishes the Scanner read so the file handle is released

اسم مفقود يرمي FileNotFoundException

برنامج ثانٍ يحتفظ بنفس الشكل لكنه يشير إلى اسم غير موجود على الجهاز: missing.txt. لا تنشئ هذا الملف. يجب أن يتوقف التشغيل مع FileNotFoundException.

Reader missing file throws

java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Reader {
    public static void main(String[] args) throws FileNotFoundException {
        File note = new File("missing.txt");
        Scanner scan = new Scanner(note);
        System.out.println(scan.nextLine());
        scan.close();
    }
}

ترجم بـ javac Reader.java ثم شغّل java Reader. هذه المرة لا يطبع البرنامج oak. تُبلغ الطرفية عن FileNotFoundException. بند throws على main يسمح لذلك الاستثناء checked بالخروج من main بلا catch في هذه الصفحة. تدرّبت على catch سابقًا؛ هنا نقطة التدريس أن تعرف أن اسم ملف مفقود يوقف القراءة. تهجئة نوع الاستثناء مهمة عند الحديث عنه: FileNotFoundException. قول «خطأ» فقط غامض جدًا لهذا الدرس.
إن أنشأت missing.txt بالخطأ، احذفه أو أعد الاسم في السلسلة إلى اسم غائب. فضّل عرض note.txt الناجح عندما تريد شاشة هادئة مع oak. احتفظ بعرض الاسم المفقود فقط لرؤية FileNotFoundException. بدّل الملفات عمدًا حتى لا تختلط القراءة الناجحة وتوقف الاسم المفقود في main واحد أثناء الدراسة.
لا تخترع كتابة Java في هذه الصفحة لإنشاء note.txt. إنشاء الملف النصي في محرر يكفي لتمرين القراءة. الصفحة التالية هي كتابة ملف بـ Java ليخزن البرنامج الحروف بنفسه. المسارات وأدوات ملفات إضافية تأتي لاحقًا؛ هذه الصفحة تحتفظ بقراءة واضحة وتوقف اسم مفقود واضح.

مقارنة مع throw على Signal

في صفحة الرمي، java Signal توقف مع IllegalArgumentException عندما كانت الأكواب فارغة. في هذه الصفحة التوقف لملف مفقود هو FileNotFoundException، والمسار السعيد يطبع سطرًا من القرص. أبقِ ملفات Signal كتاريخ إن بقيت قريبة؛ شغّل java Reader لعروض الملفات لتطابق الشاشة هذا الدرس.
تاريخ wrappers والمصفوفات و catch يبقى تاريخًا. اليوم الرموز الجديدة هي File، وScanner على ملف، وnextLine من القرص، وFileNotFoundException.

ما تتركه هذه الصفحة لكتابة الملفات

هذه الصفحة تقرأ فقط ملفًا موجودًا مسبقًا، أو تتوقف عندما يكون الاسم مفقودًا. الصفحة التالية تُظهر كتابة حروف داخل ملف بـ Java. ابقَ هنا مع قراءة oak وتسمية FileNotFoundException. لا تُضف استدعاء كتابة كمتطلب على عروض Reader بعد.

قبل كتابة الملفات

يمكنك قراءة note.txt بـ Scanner ورؤية oak. يمكنك فتح missing.txt ورؤية FileNotFoundException. ترجم Reader.java وشغّل java Reader لكل عرض محتفظ به بالتناوب. أنشئ note.txt يدويًا بجانب ملف الصنف. الصفحة التالية كتابة ملف، حيث يخزن البرنامج النص بنفسه.
احتفظ بالقراءة الناجحة لشاشة هادئة. احتفظ بعرض الاسم المفقود لرؤية التوقف. أبقِ كتابة Java بعيدة عن هذه الصفحة. هذه العادات الثلاث هي نقطة تفتيش قبل المتابعة. عندما يظهر oak بعد java Reader مع وجود note.txt، أنجزت قراءة الملف عملها لهذا الدرس وأنت جاهز لموضوع الكتابة التالي.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
5
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى