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

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

توجد في Java طرق متعددة لقراءة ملف نصي اعتمادًا على حجم البيانات وحالة الاستخدام. ال java.io و java.nio.file حزم توفير عدة فئات للتعامل مع قراءة الملفات بكفاءة. دعونا نناقش الأساليب المشتركة واحدا تلو الآخر.

1. استخدام فئة BufferedReader

قارئ مؤقت يقرأ الفصل النص من تدفق الأحرف ويخزن الأحرف مؤقتًا للقراءة الفعالة. غالبًا ما يتم لفه حول أ قارئ الملفات أو قارئ الإدخال لتحسين الأداء.

بناء الجملة

BufferedReader in = new BufferedReader(Reader in int size);

Java
   import     java.io.*  ;   public     class   UsingBufferReader     {      public     static     void     main  (  String  []     args  )     throws     Exception  {          // Creating BufferedReader for Input      BufferedReader     bfri     =     new     BufferedReader  (      new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );      // Reading File name      String     path     =     bfri  .  readLine  ();      BufferedReader     bfro      =     new     BufferedReader  (  new     FileReader  (  path  ));      String     st  ;      while     ((  st     =     bfro  .  readLine  ())     !=     null  )      System  .  out  .  println  (  st  );      }   }   


الإخراج

باستخدام BufferReaderالإخراج

2. فئة FileReader لقراءة الملفات النصية

ال فئة قارئ الملفات يستخدم لقراءة الملفات النصية في جافا. يقرأ الأحرف من ملف وهو مناسب لقراءة النص العادي. يفترض منشئو هذه الفئة أن ترميز الأحرف الافتراضي وحجم المخزن المؤقت الافتراضي للبايت مناسبان. 

المنشئون المحددون في هذه الفئة هم كما يلي:

  • قارئ الملفات (ملف الملف): يقوم بإنشاء FileReader جديد مع إعطاء الملف للقراءة منه
  • قارئ الملفات (FileDescriptor fd): يقوم بإنشاء FileReader جديد مع FileDescriptor للقراءة منه
  • قارئ الملفات (اسم ملف السلسلة): يقوم بإنشاء FileReader جديد مع إعطاء اسم الملف للقراءة منه
Java
   import     java.io.*  ;   public     class   UsingFileReader     {      public     static     void     main  (  String  []     args  )     throws     Exception      {      BufferedReader     br     =     new     BufferedReader  (  new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );          // Reading File name      String     path     =     br  .  readLine  ();      FileReader     fr     =     new     FileReader  (  path  );      int     i  ;          // Holds true till there is nothing to read      while     ((  i     =     fr  .  read  ())     !=     -  1  )      // Print all the content of a file      System  .  out  .  print  ((  char  )  i  );      }   }   


الإخراج

باستخدام قارئ الملفاتالإخراج

3. فئة الماسح الضوئي لقراءة الملف النصي

فئة الماسح الضوئي يوفر طريقة بسيطة لقراءة الملفات النصية وتحليل الأنواع أو السلاسل البدائية باستخدام التعبيرات العادية . يقوم بتقسيم الإدخال إلى رموز مميزة باستخدام محدد (بمسافة بيضاء افتراضية).

مثال 1: مع استخدام الحلقات

Java
   import     java.io.*  ;   import     java.util.Scanner  ;   public     class   UsingScannerClass      {      public     static     void     main  (  String  []     args  )     throws     Exception      {      BufferedReader     br     =     new     BufferedReader  (  new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );          // Reading File name      String     path     =     br  .  readLine  ();          // pass the path to the file as a parameter      File     file     =     new     File  (  path  );          Scanner     sc     =     new     Scanner  (  file  );      while     (  sc  .  hasNextLine  ())      System  .  out  .  println  (  sc  .  nextLine  ());      }   }   


الإخراج

باستخدام BufferReaderالإخراج

مثال 2: دون استخدام الحلقات

Java
   import     java.io.*  ;   import     java.util.Scanner  ;   public     class   ReadingEntireFileWithoutLoop     {      public     static     void     main  (  String  []     args  )      throws     IOException      {      BufferedReader     br     =     new     BufferedReader  (  new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );          // Reading File name      String     path     =     br  .  readLine  ();          File     file     =     new     File  (  path  );          Scanner     sc     =     new     Scanner  (  file  );      // we just need to use \Z as delimiter      sc  .  useDelimiter  (  '\Z'  );      System  .  out  .  println  (  sc  .  next  ());      }   }   


الإخراج

قراءة الملف بالكامل بدون حلقةالإخراج

4. قراءة الملف بأكمله في القائمة

يمكننا قراءة ملف نصي كامل في القائمة باستخدام Files.readAllLines() الطريقة من java.nio.file package . يصبح كل سطر في الملف عنصرًا واحدًا في القائمة.

بناء الجملة

قائمة ثابتة عامة readAllLines (Path pathCharset cs) تطرح IOException

تتعرف هذه الطريقة على ما يلي كإنهاء للأسطر: 

  • u000Du000A -> إرجاع السطر + تغذية السطر
  • u000A -> تغذية الخط
  • u000D -> إرجاع النقل
Java
   import     java.io.*  ;   import     java.nio.charset.StandardCharsets  ;   import     java.nio.file.*  ;   import     java.util.*  ;   public     class   ReadFileIntoList      {      public     static     List   <  String  >     readFileInList  (  String     fileName  )      {      // Created List of String      List   <  String  >     lines     =     Collections  .  emptyList  ();          try     {      lines     =     Files  .  readAllLines  (      Paths  .  get  (  fileName  )      StandardCharsets  .  UTF_8  );      }     catch  (  IOException     e  )     {      e  .  printStackTrace  ();      }          return     lines  ;      }          public     static     void     main  (  String  []     args  )      throws     IOException      {          BufferedReader     br     =     new      BufferedReader  (  new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );          // Reading File name      String     path     =     br  .  readLine  ();          List     l     =     readFileInList  (  path  );          // Iterator iterating over List      Iterator   <  String  >     itr     =     l  .  iterator  ();          while     (  itr  .  hasNext  ())      System  .  out  .  println  (  itr  .  next  ());      }   }   


الإخراج

قراءةFileIntoListالإخراج

5. قراءة ملف نصي كسلسلة

يمكننا قراءة ملف نصي كامل كسلسلة واحدة في Java. يكون هذا مفيدًا عندما تريد معالجة محتوى الملف ككل بدلاً من معالجة سطر تلو الآخر.

بناء الجملة:

String data = new String(Files.readAllBytes(Paths.get(fileName)));

مثال:

Java
   package     io  ;   import     java.nio.file.*  ;   public     class   ReadTextAsString     {      public     static     String     readFileAsString  (  String     fileName  )      throws     Exception      {      String     data     =     ''  ;      data     =     new     String  (      Files  .  readAllBytes  (  Paths  .  get  (  fileName  )));      return     data  ;      }      public     static     void     main  (  String  []     args  )     throws     Exception      {      BufferedReader     br     =     new     BufferedReader  (  new     InputStreamReader  (  System  .  in  ));      System  .  out  .  print  (  'Enter the Path : '  );          // Reading File name      String     path     =     br  .  readLine  ();          String     data     =     readFileAsString  (  path  );          System  .  out  .  println  (  data  );      }   }   

الإخراج

قراءة النصAsStringالإخراج

إنشاء اختبار