التعامل مع الملفات CSV في جافا

Amine
30/09/2024

ما هي ملفات CSV؟

ملفات CSV (Comma-Separated Values) هي تنسيق بسيط لتخزين البيانات في ملفات نصية. يتم تخزين كل سجل بيانات في سطر، وتُفصل الأعمدة باستخدام الفاصلة أو فاصلة منقوطة. تُستخدم ملفات CSV بشكل واسع في تبادل البيانات بين التطبيقات المختلفة أو في تخزين البيانات النصية.

لماذا نستخدم ملفات CSV في جافا؟

تُعد ملفات CSV طريقة فعّالة وبسيطة لتخزين البيانات المنظمة. تُستخدم بشكل شائع في قراءة وكتابة البيانات من وإلى قواعد البيانات، الجداول الإلكترونية (مثل Excel)، وأنظمة المعلومات. باستخدام مكتبات جافا مثل OpenCSV و Apache Commons CSV، يمكنك بسهولة قراءة وكتابة وتحليل هذه الملفات.

كيفية التعامل مع ملفات CSV في جافا باستخدام مكتبة OpenCSV

OpenCSV هي مكتبة مفتوحة المصدر تُستخدم لقراءة وكتابة ملفات CSV في جافا. تتيح لك هذه المكتبة التعامل مع بيانات CSV بسهولة دون الحاجة إلى تنفيذ الدوال الخاصة بك لقراءة أو كتابة الملفات.

إضافة مكتبة OpenCSV إلى المشروع

أولاً، تأكد من إضافة مكتبة OpenCSV إلى مشروعك باستخدام Gradle أو Maven. إذا كنت تستخدم Gradle، أضف التالي إلى ملف build.gradle:

implementation 'com.opencsv:opencsv:5.5.2'

إذا كنت تستخدم Maven، أضف التالي إلى ملف pom.xml:

<dependency>
   <groupId>com.opencsv</groupId>
   <artifactId>opencsv</artifactId>
   <version>5.5.2</version>
</dependency>

كيفية قراءة ملف CSV باستخدام OpenCSV

لقراءة ملف CSV، يمكنك استخدام الفئة CSVReader وتحديد المسار إلى الملف. مثال:

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
   public static void main(String[] args) {
      String filePath = "students.csv";

      try (CSVReader reader = new CSVReader(new FileReader(filePath))) {
         String[] line;
         while ((line = reader.readNext()) != null) {
            System.out.println("اسم الطالب: " + line[0] + ", العمر: " + line[1] + ", التخصص: " + line[2]);
         }
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء قراءة الملف: " + e.getMessage());
      }
   }
}

في هذا المثال، قمنا بقراءة بيانات الطلاب من ملف students.csv وطبعنا كل سطر على الشاشة. استخدمنا الدالة readNext لاسترجاع البيانات سطرًا بسطر.

كيفية كتابة ملف CSV باستخدام OpenCSV

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

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
   public static void main(String[] args) {
      String filePath = "output.csv";

      try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) {
         String[] header = {"اسم الطالب", "العمر", "التخصص"};
         String[] student1 = {"أحمد", "25", "هندسة"};
         String[] student2 = {"سارة", "22", "علوم الحاسوب"};

         // كتابة العناوين
         writer.writeNext(header);

         // كتابة بيانات الطلاب
         writer.writeNext(student1);
         writer.writeNext(student2);

         System.out.println("تم إنشاء وكتابة الملف بنجاح.");
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء كتابة الملف: " + e.getMessage());
      }
   }
}

في هذا المثال، قمنا بإنشاء ملف باسم output.csv وكتبنا بيانات الطلاب فيه باستخدام CSVWriter.

كيفية التعامل مع ملفات CSV في جافا باستخدام مكتبة Apache Commons CSV

Apache Commons CSV هي مكتبة قوية تُستخدم لتحليل وكتابة ملفات CSV في جافا. توفر ميزات متقدمة للتحكم في تنسيق CSV والتعامل مع البيانات بشكل مرن.

إضافة مكتبة Apache Commons CSV إلى المشروع

إذا كنت تستخدم Gradle، أضف التالي إلى ملف build.gradle:

implementation 'org.apache.commons:commons-csv:1.8'

إذا كنت تستخدم Maven، أضف التالي إلى ملف pom.xml:

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-csv</artifactId>
   <version>1.8</version>
</dependency>

كيفية قراءة ملف CSV باستخدام Apache Commons CSV

لقراءة ملف CSV، يمكنك استخدام الفئة CSVParser وتحديد الأعمدة والعناوين بشكل واضح. مثال:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;

public class Main {
   public static void main(String[] args) {
      String filePath = "students.csv";

      try (CSVParser parser = new CSVParser(new FileReader(filePath), CSVFormat.DEFAULT.withHeader("اسم الطالب", "العمر", "التخصص"))) {
         for (CSVRecord record : parser) {
            System.out.println("اسم الطالب: " + record.get("اسم الطالب") + ", العمر: " + record.get("العمر") + ", التخصص: " + record.get("التخصص"));
         }
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء قراءة الملف: " + e.getMessage());
      }
   }
}

في هذا المثال، قمنا بقراءة ملف CSV باستخدام الفئة CSVParser وقمنا بتحديد العناوين للملف، مما يسهل الوصول إلى البيانات باستخدام الأسماء المحددة.

كيفية كتابة ملف CSV باستخدام Apache Commons CSV

لإنشاء ملف CSV وكتابة بيانات إليه، يمكنك استخدام الفئة CSVPrinter مع تحديد تنسيق CSV الذي ترغب في استخدامه. الصيغة العامة هي:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
   public static void main(String[] args) {
      String filePath = "output.csv";

      try (CSVPrinter printer = new CSVPrinter(new FileWriter(filePath), CSVFormat.DEFAULT.withHeader("اسم الطالب", "العمر", "التخصص"))) {
         printer.printRecord("أحمد", 25, "هندسة");
         printer.printRecord("سارة", 22, "علوم الحاسوب");
         System.out.println("تم إنشاء وكتابة الملف بنجاح.");
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء كتابة الملف: " + e.getMessage());
      }
   }
}

في هذا المثال، قمنا بإنشاء ملف باسم output.csv وكتبنا بيانات الطلاب فيه باستخدام CSVPrinter.

مقارنة بين OpenCSV و Apache Commons CSV

كلا المكتبتين تُستخدمان لقراءة وكتابة ملفات CSV، لكن هناك بعض الاختلافات بينهما:

  • OpenCSV: بسيطة وسهلة الاستخدام، تُستخدم غالبًا للمشاريع الصغيرة والمتوسطة. تحتوي على أدوات محدودة لتحليل البيانات.
  • Apache Commons CSV: توفر مزايا متقدمة للتحكم في تنسيق البيانات ومعالجة الحقول الفارغة أو القيم المعقدة. مناسبة للمشاريع الكبيرة أو التي تحتاج إلى تكوينات متقدمة.

تمرين (مستوى متوسط): إنشاء برنامج لإدارة بيانات الموظفين باستخدام CSV

في هذا التمرين، سنقوم بإنشاء برنامج لإدارة بيانات الموظفين باستخدام ملفات CSV. البرنامج يجب أن يحتوي على العمليات التالية:

المتطلبات:

  • إنشاء ملف CSV باسم employees.csv يحتوي على بيانات الموظفين (الاسم، العمر، الوظيفة).
  • قراءة البيانات من الملف باستخدام إحدى المكتبات (OpenCSV أو Apache Commons CSV).
  • إدراج موظف جديد في الملف، ثم قراءة البيانات بعد الإدراج.

الكود:

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class EmployeeManager {
   public static void main(String[] args) {
      String filePath = "employees.csv";

      // قراءة البيانات من الملف
      List employees = new ArrayList<>();
      try (CSVReader reader = new CSVReader(new FileReader(filePath))) {
         String[] line;
         while ((line = reader.readNext()) != null) {
            employees.add(line);
         }
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء قراءة الملف: " + e.getMessage());
      }

      // إضافة موظف جديد
      String[] newEmployee = {"مريم", "30", "مديرة مبيعات"};
      employees.add(newEmployee);

      // كتابة البيانات إلى الملف مرة أخرى
      try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) {
         writer.writeAll(employees);
         System.out.println("تم تحديث بيانات الموظفين بنجاح.");
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء كتابة الملف: " + e.getMessage());
      }
   }
}

شرح الكود:

  • قمنا بقراءة بيانات الموظفين من ملف employees.csv باستخدام مكتبة OpenCSV.
  • أضفنا موظفًا جديدًا إلى القائمة، ثم كتبنا البيانات مرة أخرى إلى الملف.

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

خاتمة

في هذا الدرس، تعرفنا على كيفية التعامل مع ملفات CSV في جافا باستخدام مكتبتين شهيرتين: OpenCSV و Apache Commons CSV. كما تعلمنا كيفية قراءة وكتابة وتحليل بيانات CSV في برامج جافا. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة في التعامل مع ملفات CSV. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!

التعليقات

اترك تعليقاً