קריאה מתיק בקוטלין

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

במדריך מהיר זה נלמד על הדרכים השונות לקריאת קובץ בקוטלין.

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

2. קריאת קובץ

בואו ניצור תחילה קובץ קלט שיקרא קוטלין. אנו יוצרים קובץ שנקרא Kotlin.in והניחו אותו בספריה אליה ניתן לגשת באמצעות הקוד שלנו.

תוכן הקובץ יכול להיות:

שלום לקוטלין. זה: 1. תמציתי 2. בטוח 3. יכולת פעולה הדדית 4. ידידותי לכלים

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

2.1. forEachLine

קורא קובץ שורה אחר שורה באמצעות ערכת התווים שצוינה (ברירת המחדל היא UTF-8) וקוראת לפעולה לכל שורה:

כיף readFileLineByLineUsingForEachLine (fileName: String) = קובץ (fileName). forEachLine {println (it)}

2.2. useLines

מתקשר להתקשרות חוזרת חסומה נתונה, ומעניקה לו רצף של כל השורות בקובץ.

לאחר סיום העיבוד, הקובץ נסגר:

כיף readFileAsLinesUsingUseLines (fileName: String): List = File (fileName) .useLines {it.toList ()}

2.3. bufferedReader

מחזיר חדש BufferedReader לקריאת תוכן הקובץ.

ברגע שיש לנו BufferedReader, אנו יכולים לקרוא את כל השורות בו:

מהנה readFileAsLinesUsingBufferedReader (fileName: String): List = File (fileName) .bufferedReader (). readLines ()

2.4. readLines

קורא ישירות את תוכן הקובץ כרשימת שורות:

כיף readFileAsLinesUsingReadLines (fileName: String): List = File (fileName) .readLines ()

שיטה זו אינה מומלצת לשימוש בקבצי ענק.

2.5. inputStream

בונה חדש FileInputStream עבור הקובץ ומחזיר אותו כתוצאה מכך.

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

כיף readFileAsTextUsingInputStream (fileName: String) = File (fileName) .inputStream (). readBytes (). toString (Charsets.UTF_8)

2.6. readText

קורא את כל תוכן הקובץ כ- חוּט ערכת התווים שצוינה (ברירת המחדל היא UTF-8):

כיף readFileDirectlyAsText (fileName: String): String = File (fileName) .readText (Charsets.UTF_8)

שיטה זו אינה מומלצת לקבצי ענק ויש בה מגבלה פנימית של גודל קובץ 2 GB.

2.7. getResource

מציאת משאב עם השם הנתון ומחזירה a כתובת אתר לְהִתְנַגֵד:

כיף readFileUsingGetResource (fileName: String) = זה :: class.java.getResource (fileName) .readText (Charsets.UTF_8)

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

2.8. getResourceAsStream

מוצא משאב עם השם הנתון ומחזיר InputStream למשל:

כיף readFileAsLinesUsingGetResourceAsStream (fileName: String) = זה :: class.java.getResourceAsStream (fileName) .bufferedReader (). readLines ()

אם הוא מוצא את המשאב, הוא יחזיר InputStream, שניתן לעבד כפי שמוצג קודם - למשל על ידי קבלת a BufferedReader. אם הוא לא יכול למצוא את המשאב, הוא חוזר ריק. כשמשתמש getResourceAsStream, נכנס פנימה שם קובץ אינו שם קובץ מוחלט אלא שם ביחס למשאבי הפרויקט שלנו.

3. מסקנה

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

קוד המקור של מאמר זה ניתן למצוא ברפיו הבא של GitHub.