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.