البرمجة

حل مشكلات قراءة الملفات وكتابتها في Java: دليل تصحيحي

في البداية، يتعين عليك فحص الكود الذي قدمته بحذر لتحديد الأخطاء والمشكلات التي قد تكون سببًا في ظهور الأخطاء. يبدو أن هناك عدة نقاط يجب مراجعتها في الكود الخاص بك.

أولًا، يجب أن تعلم أن دالة readLine() في BufferedReader تقوم بقراءة سطر واحد فقط من الملف في كل مرة. لذا، يجب عليك تخزين السطور المقروءة في متغير ثم استخدامها لاحقًا. في الوقت الحالي، تقوم بقراءة السطر وتقوم بتجاوزه فورًا دون استفادة من المحتوى.

تعتمد على readLine() للتحقق من نهاية الملف، لكن يجب أيضًا مراعاة التحقق من قيمة null بشكل منفصل.

بالإضافة إلى ذلك، يجب أن تتحقق من وجود الملف “marc21.txt” وأن تتأكد من أن الملف قابل للقراءة. يمكن أن يكون عدم وجود الملف أو عدم قدرة البرنامج على قراءته سببًا آخر في الأخطاء.

علاوة على ذلك، يجب تصحيح بعض الأخطاء النحوية في الكود. على سبيل المثال، يجب عليك استخدام bw.close() بعد الانتهاء من الحلقة while وليس داخلها، لضمان أن تكون الكتابة في الملف قد اكتملت بشكل صحيح.

إليك تصحيح لبعض النقاط المشار إليها:

java
public static void main(String[] args) throws IOException { String file = "marc21.txt"; String line; BufferedReader br = new BufferedReader(new FileReader(file)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("marc22.txt"))); while ((line = br.readLine()) != null) { // obtaining first five characters of file String substring = line.substring(0, 4); // converting substring to integer int x = Integer.parseInt(substring); System.out.println("x is " + x); // taking record to marc21 to another file marc22 bw.write(line.substring(0, x)); bw.write("\n"); } // close the BufferedWriter outside the loop bw.close(); // close the BufferedReader br.close(); }

تأكد من تحليل هذا الكود بعناية وتعديله وفقًا لاحتياجاتك ومتطلبات برنامجك.

المزيد من المعلومات

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

أولًا، يبدو أن هناك خطأ في استخدام دالة readLine() حيث يجب حفظ السطر الذي تم قراءته في متغير لاحقاً. لذا، يُفضل تخزين السطر المقروء في متغير لاستخدامه لاحقاً.

أيضًا، يجب وضع الجزء الخاص بإغلاق BufferedWriter (bw.close()) خارج الحلقة while. إذا قمت بإغلاقها داخل الحلقة، فإنها ستُغلق في كل تكرار، وهذا قد يؤدي إلى مشاكل في كتابة الملف.

علاوة على ذلك، يجب التأكد من أن الملف “marc21.txt” متاحًا وموجودًا في المسار الصحيح.

إليك نسخة من الكود مع التصحيحات المقترحة:

java
import java.io.*; public class Main { public static void main(String[] args) throws IOException { String file = "marc21.txt"; String line; BufferedReader br = new BufferedReader(new FileReader(file)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("marc22.txt"))); while ((line = br.readLine()) != null) { // obtaining first five characters of line String substring = line.substring(0, 4); // converting substring to integer int x = Integer.parseInt(substring); System.out.println("x is " + x); // taking record to marc21 to another file marc22 bw.write(line.substring(0, x)); bw.write("\n"); } // close the BufferedWriter outside the loop bw.close(); br.close(); } }

يرجى مراجعة هذا التعديل وتجربة تشغيل البرنامج مرة أخرى. إذا كانت لديك أية أسئلة إضافية أو مشاكل، فلا تتردد في طرحها.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!