توجد في Java طرق متعددة لقراءة ملف نصي اعتمادًا على حجم البيانات وحالة الاستخدام. ال java.io و java.nio.file حزم توفير عدة فئات للتعامل مع قراءة الملفات بكفاءة. دعونا نناقش الأساليب المشتركة واحدا تلو الآخر.
1. استخدام فئة BufferedReader
قارئ مؤقت يقرأ الفصل النص من تدفق الأحرف ويخزن الأحرف مؤقتًا للقراءة الفعالة. غالبًا ما يتم لفه حول أ قارئ الملفات أو قارئ الإدخال لتحسين الأداء.
بناء الجملة
JavaBufferedReader in = new BufferedReader(Reader in int size);
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); } }
الإخراج
الإخراج2. فئة FileReader لقراءة الملفات النصية
ال فئة قارئ الملفات يستخدم لقراءة الملفات النصية في جافا. يقرأ الأحرف من ملف وهو مناسب لقراءة النص العادي. يفترض منشئو هذه الفئة أن ترميز الأحرف الافتراضي وحجم المخزن المؤقت الافتراضي للبايت مناسبان.
المنشئون المحددون في هذه الفئة هم كما يلي:
- قارئ الملفات (ملف الملف): يقوم بإنشاء FileReader جديد مع إعطاء الملف للقراءة منه
- قارئ الملفات (FileDescriptor fd): يقوم بإنشاء FileReader جديد مع FileDescriptor للقراءة منه
- قارئ الملفات (اسم ملف السلسلة): يقوم بإنشاء FileReader جديد مع إعطاء اسم الملف للقراءة منه
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: مع استخدام الحلقات
Javaimport 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()); } }
الإخراج
أورفي جاويد
الإخراجمثال 2: دون استخدام الحلقات
Javaimport 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 -> إرجاع النقل
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()); } }
الإخراج
الإخراج5. قراءة ملف نصي كسلسلة
يمكننا قراءة ملف نصي كامل كسلسلة واحدة في Java. يكون هذا مفيدًا عندما تريد معالجة محتوى الملف ككل بدلاً من معالجة سطر تلو الآخر.
بناء الجملة:
طول سلسلة جافا
String data = new String(Files.readAllBytes(Paths.get(fileName)));
مثال:
Javapackage 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); } }
الإخراج
الإخراج إنشاء اختبار