כיצד לכתוב לקובץ CSV בג'אווה

1. סקירה כללית

במדריך קצר זה, אנו הולכים ללמוד כיצד לכתוב לקובץ CSV באמצעות Java. CSV מייצג ערכים מופרדים באמצעות פסיקים וזה פורמט נפוץ לביצוע העברת נתונים בכמות גדולה בין מערכות.

כדי לכתוב את קובץ ה- CSV שלנו, נשתמש בכיתות ב- java.io חֲבִילָה.

נדבר על תווים מיוחדים ואיך לטפל בהם. אנו נתמקד בקובץ הפלט שלנו לפתיחה ב- Microsoft Excel ו- Google Sheets.

לאחר דוגמת Java שלנו, נסתכל בקצרה על כמה ספריות צד שלישי זמינות לעבודה עם קבצי CSV.

2. כתיבה עם PrintWriter

אנחנו הולכים להשתמש ב- PrintWriter לכתיבת קובץ ה- CSV שלנו. לקבלת מבט מפורט יותר על השימוש java.io לכתוב לקובץ, עיין במאמר שלנו בנושא כתיבה לקבצים.

2.1. כתיבת CSV

ראשית, בואו ניצור שיטה לעיצוב שורה אחת של נתונים, המיוצגת כמערך של חוּטs:

מחרוזת ציבורית convertToCSV (מחרוזת [] נתונים) {להחזיר Stream.of (data) .map (זה :: escapeSpecialCharacters) .collect (Collectors.joining (",")); }

אבל לפני שנקרא לשיטה זו, בוא נבנה כמה נתוני דוגמה:

רשימת dataLines = ArrayList חדש (); dataLines.add (מחרוזת חדשה [] {"ג'ון", "איילה", "38", "נתוני תגובה \ n שורה נוספת של נתוני תגובה"}); dataLines.add (מחרוזת חדשה [] {"Jane", "Doe, Jr.", "19", "היא אמרה \" אני מצוטט \ ""});

ועם הנתונים האלה ביד, בואו להמיר כל שורה עם convertToCSV וכתוב אותו לקובץ:

חלל ציבורי givenDataArray_whenConvertToCSV_thenOutputCreated () זורק IOException {File csvOutputFile = קובץ חדש (CSV_FILE_NAME); נסה (PrintWriter pw = New PrintWriter (csvOutputFile)) {dataLines.stream () .map (this :: convertToCSV) .forEach (pw :: println); } assertTrue (csvOutputFile.exists ()); }

2.2. טיפול בתווים מיוחדים

בקובץ CSV, תווים מסוימים הם בעייתיים וכמפתחים, לעתים רחוקות יש לנו שליטה מוחלטת על איכות הנתונים שלנו. אז בואו נסתכל כעת כיצד להתמודד עם תווים מיוחדים.

לדוגמא, נתמקד בפסיקים, במרכאות ובשורות חדשות. שדות המכילים פסיקים או מרכאות יוקפו במרכאות כפולות ובמרכאות כפולות יימלטו במרכאות כפולות. נחסל קווים חדשים ונחליף אותם כל אחד לרווח לבן.

אילו תווים מהווים בעיה וכיצד יש לטפל בהם עשויים להשתנות בהתאם למקרה השימוש.

שֶׁלָנוּ convertToCSV שיטה קוראת escapeSpecialCharacters שיטה על כל פיסת נתונים כאשר היא בונה א חוּט.

בואו ליישם את שלנו escapeSpecialCharacters שיטה עכשיו:

ציבורי מחרוזת escapeSpecialCharacters (נתוני מחרוזת) {String escapedData = data.replaceAll ("\ R", ""); אם (data.contains (",") || data.contains ("\" ") || data.contains (" '")) {data = data.replace (" \ "", "\" \ "" ); escapedData = "\" "+ נתונים +" \ ""; } להחזיר escapedData; }

3. ספריות צד שלישי

כפי שראינו בדוגמה שלנו, כתיבת קובץ CSV עלולה להסתבך כאשר אנו מתחילים לחשוב על תווים מיוחדים וכיצד לטפל בהם.

למזלנו, קיימות ספריות צד שלישי רבות לעבודה עם קבצי CSV ורבים מהם מטפלים בתווים מיוחדים אלה ובמקרים חריגים אחרים שעלולים להתרחש.

בואו נסתכל על כמה מהם:

  • Apache Commons CSV: הצעת ה- CSV של Apache לעבודה עם קבצי CSV
  • CSV פתוח: ספריית CSV פופולרית נוספת ומתוחזקת באופן פעיל
  • Flatpack: ספריית CSV קוד פתוח המפותחת באופן פעיל
  • CSVeed: קוד פתוח ומתוחזק באופן פעיל

4. מסקנה

במאמר מהיר זה, הראינו כיצד לכתוב קובץ CSV באמצעות קבצי Java PrintWriter מעמד. לאחר מכן, דנו וטיפלנו בתווים מיוחדים בנתונים המופנים.

לאחר דוגמת Java הפשוטה, בדקנו סקירה כללית של ספריות צד שלישי זמינות.

קוד הדוגמה זמין ב- GitHub.