logo

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

توجد في 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' title=الإخراج

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);  } } 


الإخراج

باستخدام قارئ الملفات' loading='lazy' title=الإخراج

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' loading='lazy' title=الإخراج

مثال 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());  } } 


الإخراج

قراءة الملف بالكامل بدون حلقة' loading='lazy' title=الإخراج

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' loading='lazy' title=الإخراج

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' loading='lazy' title=الإخراج

إنشاء اختبار