Java - הוסף נתונים לקובץ

1. הקדמה

במדריך מהיר זה נראה כיצד אנו משתמשים בג'אווה כדי להוסיף נתונים לתוכן הקובץ - בכמה דרכים פשוטות.

נתחיל באיך שנוכל לעשות זאת באמצעות ליבות Java FileWriter.

2. שימוש FileWriter

הנה מבחן פשוט - קריאת קובץ קיים, הוספת טקסט כלשהו ואז וודא שהוא צורף כהלכה:

@Test ציבורי בטל כאשר AppendToFileUsingFileWriter_thenCorrect () זורק IOException {FileWriter fw = FileWriter חדש (fileName, נכון); BufferedWriter bw = BufferedWriter חדש (fw); bw.write ("ספרד"); bw.newLine (); bw.close (); assertThat (getStringFromInputStream (FileInputStream חדש (fileName))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "גרמניה \ r \ n" + "ספרד \ r \ n"); }

ציין זאת של FileWriter קונסטרוקטור מקבל א בוליאני סימון אם אנו רוצים להוסיף נתונים לקובץ קיים.

אם הגדרנו את זה ל שֶׁקֶר, ואז התוכן הקיים יוחלף.

3. שימוש FileOutputStream

לאחר מכן - בואו נראה איך נוכל לבצע את אותה פעולה - באמצעות FileOutputStream:

@ מבחן ציבורי בטל כאשר AppendToFileUsingFileOutputStream_thenCorrect () זורק חריג {FileOutputStream fos = FileOutputStream חדש (fileName, נכון); fos.write ("ספרד \ r \ n" .getBytes ()); fos.close (); assertThat (StreamUtils.getStringFromInputStream (FileInputStream חדש (fileName))) .isEqualTo ("בריטניה \ r \ n" + "ארה"ב \ r \ n" + "גרמניה \ r \ n" + "ספרד \ r \ n"); }

באופן דומה, ה FileOutputStream constructor מקבל בוליאני שצריך להגדיר אותו כ- true כדי לסמן שאנחנו רוצים להוסיף נתונים לקובץ קיים.

4. שימוש java.nio.file

לאחר מכן - נוכל להוסיף תוכן לקבצים באמצעות פונקציונליות ב- java.nio.file - שהוצג ב- JDK 7:

@Test ציבורי בטל כאשר AppendToFileUsingFiles_thenCorrect () זורק IOException {String contentToAppend = "ספרד \ r \ n"; Files.write (Paths.get (fileName), contentToAppend.getBytes (), StandardOpenOption.APPEND); assertThat (StreamUtils.getStringFromInputStream (FileInputStream חדש (fileName))) .isEqualTo ("בריטניה \ r \ n" + "ארה"ב \ r \ n" + "גרמניה \ r \ n" + "ספרד \ r \ n"); }

5. שימוש בגויאבה

כדי להתחיל להשתמש בגויאבה, עלינו להוסיף את התלות שלה לזו שלנו pom.xml:

 com.google.guava גויאבה 23.0 

עכשיו, בואו נראה כיצד נוכל להתחיל להשתמש בגויאבה כדי להוסיף תוכן לקובץ קיים:

@Test הציבור בטל כאשר AppendToFileUsingFileWriter_thenCorrect () זורק IOException {File file = File חדש (fileName); CharSink chs = Files.asCharSink (קובץ, Charsets.UTF_8, FileWriteMode.APPEND); chs.write ("ספרד \ r \ n"); assertThat (StreamUtils.getStringFromInputStream (FileInputStream חדש (fileName))) .isEqualTo ("בריטניה \ r \ n" + "ארה"ב \ r \ n" + "גרמניה \ r \ n" + "ספרד \ r \ n"); }

6. שימוש ב- Apache Commons IO FileUtils

לסיום - בואו נראה כיצד נוכל להוסיף תוכן לקובץ קיים באמצעות Apache Commons IO FileUtils.

ראשית, בואו נוסיף את התלות של Apache Commons ל- IO pom.xml:

 commons-io commons-io 2.6 

עכשיו, בואו נראה דוגמה מהירה שמדגימה הוספת תוכן לקובץ קיים באמצעות FileUtils:

@Test ציבורי בטל כאשר AppendToFileUsingFiles_thenCorrect () זורק IOException {File file = קובץ חדש (fileName); FileUtils.writeStringToFile (קובץ, "ספרד \ n \", StandardCharsets.UTF_8, נכון); assertThat (StreamUtils.getStringFromInputStream (FileInputStream חדש (fileName))) .isEqualTo ("בריטניה \ r \ n" + "ארה"ב \ r \ n" + "גרמניה \ r \ n" + "ספרד \ r \ n"); }

7. מסקנה

במאמר זה ראינו כיצד אנו יכולים להוסיף תוכן במספר דרכים.

ניתן למצוא את היישום המלא של מדריך זה ב- GitHub.