English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في معظم الحالات، إذا حاولت كتابة محتوى إلى الملف باستخدام فئات حزمة java.io، فإن الملف سيتم تغييره، أي، إزالة البيانات الموجودة في الملف وإضافة بيانات جديدة.
لكن في بعض الحالات، مثل تسجيل الاستثناءات في ملف (لا يستخدم إطار العمل المسجل)، تحتاج إلى إلصاق البيانات (الرسالة) في سطر الملف التالي.
يمكنك تنفيذ هذه العملية باستخدام فئة Files من حزمة java.nio. يقدم هذا النوع طريقةwrite()}
، ويقبل هذا النوع
مثل Path Class object يمثل ملف.
حفظ البيانات في مصفوفة البايتات إلى الملف.
يمكنك نقل متغير نوع OpenOption (واجهة) كقيمة إلى أحد عناصر قائمة StandardOpenOption، والتي تحتوي على 10 خيارات هي APPEND، CREATE، CREATE_NEW، DELETE_ON_CLOSE، DSYNC، READ، SPARSE، SYNC، TRUNCATE_EXISTING، WRITE.
يمكنك طلب هذه الطريقة عن طريق تقديم مسار الملف، مصفوفة البايتات التي تحتوي على البيانات التي تريد إلصاقها، واختيار StandardOpenOption.APPEND.
برنامج Java التالي يحتوي على مصفوفة تحتوي على 5 قيم صحيحة، ونحن نجعل المستخدم يختار عنصرين (فهرس العنصر) ويقومون بالقسمة بينهما. نحن نغلف هذا الكود في مكتبة try التي تحتوي على ثلاثة blocks catch لتقاطع ArithmeticException، InputMismatchException و ArrayIndexOutOfBoundsException. نحن نعبر عن كل منهم في دعوةwriteToFile()
الطريقة.
هذه الطريقة تقبل العنصر الاستثنائي وتستخدم فئة Fileswrite()}يضيفها إلى الملف.
public class LoggingToFile { private static void writeToFile(Exception e) throws IOException { // يتم استرجاع ملف السجلات Path logFile = Paths.get("ExceptionLog.txt"); // يتم إعداد البيانات التي سيتم تسجيلها byte bytes[] = (\r\n" + LocalDateTime.now() + ": " + e.toString()).getBytes(); // يتم إضافة الاستثناء إلى الملف Files.write(logFile, bytes, StandardOpenOption.APPEND); System.out.println("تم تسجيل الاستثناء في ملفك"); } public static void main(String [] args) throws IOException { Scanner sc = new Scanner(System.in); int[] arr = {10, 20, 30, 2, 0, 8}; System.out.println("الصف: " + Arrays.toString(arr)); System.out.println("اختر العدد المطلق والمقسوم عليه (لا يكون 0) من هذا الصف (ادخل المواضع 0 إلى 5)"); try { int a = sc.nextInt(); int b = sc.nextInt(); int result = (arr[a]) / (arr[b]); System.out.println("نتيجة " + arr[a] + "/" + arr[b] + ": " + result); }catch(ArrayIndexOutOfBoundsException ex) { System.out.println("تحذير: لقد اخترت موضعًا غير موجود في الصف"); writeLogToFile(ex); catch(ArithmeticException ex) { System.out.println("Warning: You cannot divide an number with 0"); writeLogToFile(ex); }catch(InputMismatchException ex) { System.out.println("Warning: You have entered invalid input"); writeLogToFile(ex); } } }
Enter 3 integer values one by one: Array: [10, 20, 30, 2, 0, 8] Choose numerator and denominator (not 0) from this array (enter positions 0 to 5) 2 4 Warning: You cannot divide an number with 0 Exception logged to your file
Enter 3 integer values one by one: Array: [10, 20, 30, 2, 0, 8] Choose numerator and denominator (not 0) from this array (enter positions 0 to 5) 5 12 Warning: You have chosen a position which is not in the array Exception logged to your file
Enter 3 integer values one by one: Array: [10, 20, 30, 2, 0, 8] Choose numerator and denominator (not 0) from this array (enter positions 0 to 5) hello Warning: You have entered invalid input Exception logged to your file
2019-07-19T17:57:09.735: java.lang.ArithmeticException: / by zero 2019-07-19T17:57:39.025: java.lang.ArrayIndexOutOfBoundsException: 12 2019-07-19T18:00:23.374: java.util.InputMismatchException