מבוא ל- Apache Commons CSV

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

ספריית ה- CSV של Apache Commons כוללת תכונות שימושיות רבות ליצירה וקריאה של קבצי CSV.

במדריך מהיר זה נראה כיצד להשתמש בספריה זו על ידי הצגת דוגמה פשוטה.

2. תלות של Maven

כדי להתחיל, נייבא את הגרסה האחרונה של ספרייה זו באמצעות Maven:

 org.apache.commons commons-csv 1.4 

כדי לבדוק את הגרסה האחרונה של הספרייה הזו - עבור לכאן.

3. קריאת קובץ CSV

שקול את קובץ ה- CSV הבא שנקרא book.csv המכיל את התכונות של ספר:

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

בואו נראה איך נוכל לקרוא את זה:

מפה AUTHOR_BOOK_MAP = HashMap חדש () {{put ("דן סימונס", "Hyperion"); לשים ("דגלאס אדאמס", "מדריך הטרמפיסט לגלקסיה"); }}); מחרוזת [] HEADERS = {"מחבר", "כותרת"}; @ מבחן בטל ציבורי שניתן CSVFile_whenRead_thenContentsAsExpected () זורק IOException {Reader ב = FileReader חדש ("book.csv"); רשומות ניתנות לשינוי = CSVFormat.DEFAULT .withHeader (HEADERS) .withFirstRecordAsHeader () .parse (in); עבור (רשומת CSVRecord: רשומות) {מחבר מחרוזת = record.get ("מחבר"); כותרת מחרוזת = record.get ("כותרת"); assertEquals (AUTHOR_BOOK_MAP.get (מחבר), כותרת); }}

אנו קוראים את הרשומות של קובץ CSV לאחר דילוג על השורה הראשונה מכיוון שהיא הכותרת.

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

4. יצירת קובץ CSV

בואו נראה איך נוכל ליצור את אותו קובץ CSV כנ"ל:

בטל ציבורי createCSVFile () זורק את IOException {FileWriter out = FileWriter חדש ("book_new.csv"); נסה (מדפסת CSVPrinter = CSVPrinter חדש (out, CSVFormat.DEFAULT .withHeader (HEADERS))) {AUTHOR_BOOK_MAP.forEach ((מחבר, כותרת) -> {printer.printRecord (מחבר, כותרת);}); }}

קובץ ה- CSV החדש ייווצר עם הכותרות המתאימות מכיוון שציינו אותם ב CSVFormat הַצהָרָה.

5. כותרות וטורי קריאה

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

בוא נעבור אותם בזה אחר זה:

5.1. גישה לעמודות לפי אינדקס

זו הדרך הבסיסית ביותר לקרוא ערכי עמודות. ניתן להשתמש בזה כאשר הכותרות של קבצי ה- CSV אינן ידועות:

קורא ב- = FileReader חדש ("book.csv"); רשומות ניתנות לשינוי = CSVFormat.DEFAULT.parse (in); עבור (רשומת CSVRecord: רשומות) {String columnOne = record.get (0); מחרוזת columnTwo = record.get (1); }

5.2. גישה לעמודות על ידי כותרות מוגדרות מראש

זוהי דרך אינטואיטיבית יותר לגישה לעמודות בהשוואה לגישה באמצעות מדדים:

רשומות ניתנות לניתנים לשינוי = CSVFormat.DEFAULT .withHeader ("מחבר", "כותרת"). ניתוח (ב); עבור (רשומת CSVRecord: רשומות) {מחבר מחרוזת = record.get ("מחבר"); כותרת מחרוזת = record.get ("כותרת"); }

5.3. שימוש ב- Enums ככותרות

באמצעות מיתרים עבור גישה לערכי עמודות יכול להיות נוטה לשגיאות. שימוש ב- Enums במקום מחרוזות יהפוך את הקוד לסטנדרטי וקל יותר להבנה:

enum BookHeaders {מחבר, כותרת} רשומות ניתנות לשינוי = CSVFormat.DEFAULT .withHeader (BookHeaders.class) .parse (in); עבור (רשומת CSVRecord: רשומות) {מחבר מחרוזת = record.get (BookHeaders.author); כותרת מחרוזת = record.get (BookHeaders.title); }

5.4. דילוג על קו הכותרת

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

פעולה זו תגלה כותרות אוטומטיות לגישה לערכי העמודות:

רשומות ניתנות לשינוי = CSVFormat.DEFAULT .withFirstRowAsHeader (). ניתוח (ב); עבור (רשומת CSVRecord: רשומות) {מחבר מחרוזת = record.get ("מחבר"); כותרת מחרוזת = record.get ("כותרת"); }

5.5. יצירת קובץ עם כותרות

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

FileWriter out = FileWriter חדש ("book_new.csv"); מדפסת CSVPrinter = CSVFormat.DEFAULT .withHeader ("מחבר", "כותרת"). הדפס (החוצה);

6. מסקנה

הצגנו את השימוש בספריית ה- CSV של Apache באמצעות דוגמה פשוטה. תוכלו לקרוא עוד על הספרייה כאן.

הקוד למאמר זה זמין באתר Github.


$config[zx-auto] not found$config[zx-overlay] not found