البرمجة

تحسين التعامل مع الملفات في برامج Java

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

أولاً وقبل كل شيء، يمكنك تحقيق ذلك بفحص وجود الملف قبل محاولة فتحه. يمكنك تحقيق ذلك عبر استخدام الدالة exists() من فئة File. هذا سيسمح لك بالتحقق مما إذا كان الملف موجودًا أم لا. في حالة عدم وجود الملف، يمكنك إنشاء الملف قبل محاولة فتحه.

النموذج التالي يظهر كيفية تحديث الكود ليتم التعامل مع هذا الأمر:

java
public void load() throws Exception { try { File log = new File(FILE_NAME); if (!log.exists()) { // يمكنك هنا إضافة رمز لإنشاء الملف إذا لم يكن موجودًا // على سبيل المثال: log.createNewFile(); } FileInputStream fileIn = new FileInputStream(log); ObjectInputStream in = new ObjectInputStream(fileIn); videosList = (ArrayList) in.readObject(); in.close(); fileIn.close(); } catch (Exception i) { i.printStackTrace(); } } public void writeToFile() throws Exception { try { File outputFile = new File(FILE_NAME); if (!outputFile.exists()) { // يمكنك هنا إضافة رمز لإنشاء الملف إذا لم يكن موجودًا // على سبيل المثال: outputFile.createNewFile(); } FileOutputStream outputStream = new FileOutputStream(outputFile); ObjectOutputStream oos = new ObjectOutputStream(outputStream); oos.writeObject(videosList); oos.close(); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } }

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

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

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

لتحسين تجربة تسجيل الأخطاء، يمكنك استخدام Logging في Java لتسجيل معلومات حول الأخطاء بشكل أفضل بدلاً من استخدام printStackTrace(). يمكنك استخدام مكتبة logging مثل Log4j لتحسين عملية تسجيل الأخطاء.

علاوة على ذلك، يمكنك أيضاً تحسين استخدام الموارد (resources)، مثل استخدام try-with-resources لضمان أن يتم إغلاق الموارد بشكل صحيح وتلقائي.

فيما يلي نسخة من الشيفرة البرمجية مع هذه التحسينات:

java
import java.io.*; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; public class VideoFileManager { private static final Logger LOGGER = Logger.getLogger(VideoFileManager.class.getName()); private static final String FILE_NAME = "Users/hanaezz/Desktop/output.ser"; private ArrayList videosList; public VideoFileManager() { this.videosList = new ArrayList<>(); } public void load() { try { File log = new File(FILE_NAME); if (!log.exists()) { LOGGER.log(Level.WARNING, "File not found. Creating a new file."); log.createNewFile(); } try (FileInputStream fileIn = new FileInputStream(log); ObjectInputStream in = new ObjectInputStream(fileIn)) { videosList = (ArrayList) in.readObject(); } } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error loading file", e); } } public void writeToFile() { try { File outputFile = new File(FILE_NAME); if (!outputFile.exists()) { LOGGER.log(Level.WARNING, "File not found. Creating a new file."); outputFile.createNewFile(); } try (FileOutputStream outputStream = new FileOutputStream(outputFile); ObjectOutputStream oos = new ObjectOutputStream(outputStream)) { oos.writeObject(videosList); } } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error writing to file", e); } } }

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

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

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

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر