Čítanie zo súboru v Kotline

1. Prehľad

V tomto rýchlom návode sa dozvieme o rôznych spôsoboch čítania súboru v Kotline.

Oba prípady použitia čítania celého súboru pokryjeme ako a Reťazec, ako aj jeho načítanie do zoznamu jednotlivých riadkov. Tiež ich získanie z úplnej absolútnej cesty alebo zo zdroja projektu.

2. Čítanie súboru

Najprv si vytvorme vstupný súbor, ktorý bude čítať Kotlin. Vytvoríme súbor s názvom Kotlin.in a umiestnite ho do adresára, do ktorého má prístup náš kód.

Obsah súboru môže byť:

Ahoj kotlin. Je to: 1. stručné 2. bezpečné 3. interoperabilné 4. priateľské k nástrojom

Teraz sa pozrime na rôzne spôsoby, ako môžeme čítať tento súbor. Celú cestu k súboru vytvorenému vyššie by sme mali odovzdať ako vstup pre počiatočné metódy a relatívnu cestu v našich zdrojoch pre posledné dve.

2.1. forEachLine

Číta súbor po riadku pomocou zadanej znakovej sady (predvolená je UTF-8) a zavolá akciu pre každý riadok:

zábava readFileLineByLineUsingForEachLine (fileName: String) = File (fileName) .forEachLine {println (it)}

2.2. useLines

Zavolá danému bloku spätné volanie, čím získa poradie všetkých riadkov v súbore.

Po dokončení spracovania sa súbor uzavrie:

zábava readFileAsLinesUsingUseLines (fileName: String): List = File (fileName) .useLines {it.toList ()}

2.3. bufferedReader

Vráti nový BufferedReader na prečítanie obsahu súboru.

Keď už máme BufferedReader, môžeme v ňom prečítať všetky riadky:

zábava readFileAsLinesUsingBufferedReader (fileName: String): List = File (fileName) .bufferedReader (). readLines ()

2.4. readLines

Priamo číta obsah súboru ako zoznam riadkov:

zábava readFileAsLinesUsingReadLines (názov súboru: reťazec): Zoznam = súbor (názov súboru) .readLines ()

Táto metóda sa neodporúča používať pre veľké súbory.

2.5. inputStream

Konštruuje nový FileInputStream pre súbor a vráti ho ako výsledok.

Keď máme vstupný prúd, môžeme ho previesť na bajty a potom na úplný String:

fun readFileAsTextUsingInputStream (fileName: String) = File (fileName) .inputStream (). readBytes (). toString (Charsets.UTF_8)

2.6. readText

Prečíta celý obsah súboru ako a String zadaná znaková sada (predvolená je UTF-8):

fun readFileDirectlyAsText (fileName: String): String = File (fileName) .readText (Charsets.UTF_8)

Táto metóda sa neodporúča pre veľké súbory a má vnútorné obmedzenie na veľkosť súboru 2 GB.

2.7. getResource

Vyhľadá zdroj s daným menom a vráti a URL objekt:

fun readFileUsingGetResource (fileName: String) = this :: class.java.getResource (fileName) .readText (Charsets.UTF_8)

Ak nájde zdroj, vráti a URL, ktoré je možné spracovať volaním na readText ako je uvedené vyššie. Ak nemôže nájsť zdroj, vráti sa nulový. Pri použití getResource, odovzdali názov súboru nie je absolútny názov súboru, ale názov relatívny k našim prostriedkom projektu.

2.8. getResourceAsStream

Vyhľadá zdroj s daným menom a vráti znak InputStream inštancia:

zábava readFileAsLinesUsingGetResourceAsStream (názov súboru: reťazec) = this :: class.java.getResourceAsStream (názov súboru) .bufferedReader (). readLines ()

Ak nájde zdroj, vráti InputStream, ktoré je možné spracovať tak, ako je to uvedené vyššie - napríklad získaním a BufferedReader. Ak nemôže nájsť zdroj, vráti sa nulový. Pri použití getResourceAsStream, odovzdali názov súboru nie je absolútny názov súboru, ale názov relatívny k našim prostriedkom projektu.

3. Záver

V tomto článku sme videli rôzne spôsoby čítania súboru v Kotline. V závislosti od prípadu použitia sa môžeme rozhodnúť pre čítanie súboru riadok po riadku alebo celé čítanie ako text. Môžeme na súbor odkazovať absolútnym spôsobom alebo ho môžeme nájsť medzi zdrojmi.

Zdrojový kód tohto článku nájdete v nasledujúcom úložisku GitHub.