Čí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.