English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In den meisten Fällen wird die Datei überschrieben, wenn Sie versuchen, Inhalte in die Datei zu schreiben, indem Sie Klassen aus dem Paket java.io verwenden, d.h. die bestehenden Daten im Datei gelöscht und neue Daten hinzugefügt werden.
Aber in einigen Fällen, wie z.B. das Protokollieren von Ausnahmen in eine Datei (ohne den Logger-Framework zu verwenden), müssen Sie Daten (Nachrichten) an der nächsten Zeile der Datei anhängen.
Sie können die Klasse Files aus dem Paket java.nio verwenden, um dies zu tun. Dieses Objekt bietet eine Methode namenswrite()
, dieser Methodenaufruf akzeptiert
Ein Objekt der Klasse Path, das einen Dateipfad darstellt.
Daten in einen Byte-Array des Files speichern.
Sie können einen Variablenparameter des Typs OpenOption (Interface) als Wert an eines der Elemente der Enumeration StandardOpenOption übergeben, das10Optionen, nämlich APPEND, CREATE, CREATE_NEW, DELETE_ON_CLOSE, DSYNC, READ, SPARSE, SYNC, TRUNCATE_EXISTING, WRITE.
Sie können diese Methode aufrufen, indem Sie den Pfad zur Datei, den Byte-Array mit den zu anhängenden Daten und die Option StandardOpenOption.APPEND übergeben.
Der folgende Java-Programm hat ein Array, das5Eine Ganzzahl, die wir dem Benutzer ermöglichen, zwei Elemente (die Indizes der Elemente) aus dem Array auszuwählen und zwischen ihnen zu teilen. Wir verpacken diesen Code in einen try-Block, der drei catch-Blöcke für ArithmeticException, InputMismatchException und ArrayIndexOutOfBoundsException enthält. Jeder von uns ruft daswriteToFile()
Klasse.
Diese Methode akzeptiert ein Ausnahmeobjekt und verwendet die Methode derwrite()Methode, um sie zur Datei hinzuzufügen.
public class LoggingToFile { private static void writeToFile(Exception e) throws IOException { //Logdatei abrufen Path logFile = Paths.get("ExceptionLog.txt"); //Vorbereitung der zu protokollierenden Daten byte bytes[] = ("\r\n"+LocalDateTime.now()+": "+e.toString()).getBytes(); //Fügen Sie die Ausnahme zur Datei hinzu Files.write(logFile, bytes, StandardOpenOption.APPEND); System.out.println("Ausnahme wurde in Ihre Datei protokolliert"); } 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("Array: "+Arrays.toString(arr)); System.out.println("Wählen Sie den Nenner und den Zähler (nicht 0) aus diesem Array aus (geben Sie Positionen 0 bis 5) "); try { int a = sc.nextInt(); int b = sc.nextInt(); int result = (arr[a])/(arr[b]); System.out.println("Ergebnis von "+arr[a]+"/"+arr[b]+": "+result); catch(ArrayIndexOutOfBoundsException ex) { System.out.println("Warnung: Sie haben eine Position gewählt, die nicht im Array liegt"); 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: / von zero 2019-07-19T17:57:39.025: java.lang.ArrayIndexOutOfBoundsException: 12 2019-07-19T18:00:23.374: java.util.InputMismatchException