الدخل والخرج (Input/Output) في جافا

Amine
30/09/2024

ما هو نظام الدخل والخرج (Input/Output) في جافا؟

الدخل والخرج (Input/Output) في جافا هو نظام يُستخدم لقراءة البيانات من مصادر خارجية (مثل الملفات أو الشبكة) وكتابة البيانات إلى وجهات خارجية. تستخدم جافا مكتبة متكاملة تُعرف بـ Java I/O، والتي توفر أدوات مختلفة للتعامل مع الملفات، المدخلات من المستخدم، والبيانات النصية والثنائية.

فئات Java I/O الأساسية

تحتوي مكتبة Java I/O على مجموعة من الفئات الأساسية، من أبرزها:

  • File: تُستخدم لتمثيل الملفات والمجلدات.
  • FileReader و FileWriter: تُستخدم لقراءة وكتابة الملفات النصية.
  • BufferedReader و BufferedWriter: تُستخدم لتحسين أداء القراءة والكتابة من الملفات.
  • FileInputStream و FileOutputStream: تُستخدم للتعامل مع البيانات الثنائية (Binary Data).

كيفية قراءة الملفات النصية في جافا

لقراءة ملف نصي في جافا، يمكنك استخدام الفئة FileReader أو BufferedReader. الصيغة العامة لقراءة ملف هي:

try (BufferedReader reader = new BufferedReader(new FileReader("filename.txt"))) {
   String line;
   while ((line = reader.readLine()) != null) {
      System.out.println(line);  // طباعة كل سطر من الملف
   }
} catch (IOException e) {
   System.out.println("حدث خطأ أثناء قراءة الملف: " + e.getMessage());
}

في هذا المثال، قمنا بفتح ملف باسم filename.txt باستخدام BufferedReader، ثم قرأنا كل سطر باستخدام الدالة readLine وطبعناه على الشاشة.

كيفية كتابة الملفات النصية في جافا

يمكنك كتابة ملف نصي باستخدام الفئة FileWriter أو BufferedWriter. الصيغة العامة لكتابة ملف هي:

try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
   writer.write("مرحبًا بك في جافا!");  // كتابة نص إلى الملف
   writer.newLine();  // إضافة سطر جديد
   writer.write("هذا ملف نصي مكتوب باستخدام جافا.");
} catch (IOException e) {
   System.out.println("حدث خطأ أثناء كتابة الملف: " + e.getMessage());
}

في هذا المثال، قمنا بفتح ملف باسم output.txt باستخدام BufferedWriter، ثم كتبنا نصًا إلى الملف باستخدام الدالة write.

كيفية التعامل مع الملفات الثنائية (Binary Files) في جافا

للتعامل مع الملفات الثنائية، مثل الصور أو الملفات المضغوطة، يمكنك استخدام الفئات FileInputStream و FileOutputStream:

try (FileInputStream inputStream = new FileInputStream("image.jpg");
     FileOutputStream outputStream = new FileOutputStream("copy.jpg")) {
   int byteData;
   while ((byteData = inputStream.read()) != -1) {
      outputStream.write(byteData);  // نسخ كل بايت من الملف الأصلي إلى الملف الجديد
   }
} catch (IOException e) {
   System.out.println("حدث خطأ أثناء قراءة أو كتابة الملف: " + e.getMessage());
}

في هذا المثال، قمنا بفتح ملف باسم image.jpg باستخدام FileInputStream، ثم نسخنا محتوياته إلى ملف جديد باسم copy.jpg باستخدام FileOutputStream.

كيفية إنشاء الملفات والمجلدات في جافا

يمكنك إنشاء ملفات ومجلدات جديدة باستخدام الفئة File. الصيغة العامة لإنشاء ملف أو مجلد هي:

File file = new File("newfile.txt");
if (file.createNewFile()) {
   System.out.println("تم إنشاء الملف بنجاح.");
} else {
   System.out.println("الملف موجود مسبقًا.");
}

في هذا المثال، قمنا بإنشاء ملف جديد باسم newfile.txt. إذا كان الملف موجودًا مسبقًا، يتم طباعة رسالة تفيد بذلك.

كيفية حذف الملفات والمجلدات في جافا

يمكنك حذف ملف أو مجلد باستخدام الدالة delete من الفئة File. الصيغة العامة هي:

File file = new File("newfile.txt");
if (file.delete()) {
   System.out.println("تم حذف الملف بنجاح.");
} else {
   System.out.println("لم يتم العثور على الملف.");
}

في هذا المثال، قمنا بحذف ملف باسم newfile.txt. إذا لم يتم العثور على الملف، يتم طباعة رسالة تفيد بعدم وجود الملف.

التعامل مع مسارات الملفات (File Paths)

في جافا، يمكنك استخدام الفئة Path من حزمة java.nio.file للتعامل مع مسارات الملفات والمجلدات. توفر هذه الفئة أدوات قوية للعمل مع المسارات بشكل مستقل عن النظام الأساسي (Operating System). مثال:

import java.nio.file.*;

public class Main {
   public static void main(String[] args) {
      Path path = Paths.get("example.txt");
      System.out.println("اسم الملف: " + path.getFileName());
      System.out.println("المسار المطلق: " + path.toAbsolutePath());
   }
}

في هذا المثال، قمنا باستخدام الفئة Path لعرض اسم الملف والمسار المطلق له.

تمرين (مستوى متوسط): قراءة وكتابة ملف نصي

في هذا التمرين، سنقوم بإنشاء برنامج يقرأ محتويات ملف نصي، ثم يقوم بكتابة المحتويات إلى ملف آخر.

المتطلبات:

  • فتح ملف نصي وقراءته باستخدام BufferedReader.
  • كتابة المحتويات إلى ملف جديد باستخدام BufferedWriter.
  • التأكد من إغلاق الملفات بعد الانتهاء من القراءة والكتابة.

الكود:

import java.io.*;

public class Main {
   public static void main(String[] args) {
      try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
           BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
         String line;
         while ((line = reader.readLine()) != null) {
            writer.write(line);  // كتابة كل سطر إلى الملف الجديد
            writer.newLine();  // الانتقال إلى سطر جديد
         }
         System.out.println("تم نسخ المحتويات بنجاح.");
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء قراءة أو كتابة الملف: " + e.getMessage());
      }
   }
}

شرح الكود:

  • قمنا بفتح ملف باسم input.txt باستخدام BufferedReader، ثم قرأنا كل سطر من الملف.
  • قمنا بفتح ملف جديد باسم output.txt باستخدام BufferedWriter، وكتبنا المحتويات إلى هذا الملف.
  • أغلقنا الملفات تلقائيًا باستخدام عبارة try-with-resources.

جرّب تنفيذ هذا البرنامج بنفسك، وشارك نتيجتك معنا في التعليقات! إذا واجهتك أي مشكلة أو كان لديك سؤال، لا تتردد في طرحه.

خاتمة

في هذا الدرس، تعرفنا على نظام الدخل والخرج في جافا وكيفية التعامل مع الملفات النصية والثنائية. كما تعلمنا كيفية إنشاء وقراءة وكتابة وحذف الملفات باستخدام الفئات المختلفة من مكتبة Java I/O. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!

التعليقات

اترك تعليقاً