Čitanje iz datoteke u Kotlinu

1. Pregled

U ovom brzom vodiču naučit ćemo o različitim načinima čitanja datoteke u Kotlinu.

Obuhvatit ćemo oba slučaja korištenja čitanja cijele datoteke kao Niz, kao i čitanje u popis pojedinačnih redaka. Također dobivanje iz punog apsolutnog puta ili iz projektnog resursa.

2. Čitanje datoteke

Napravimo prvo ulaznu datoteku koju će čitati Kotlin. Izrađujemo datoteku pod nazivom Kotlin.in i smjestite ga u direktorij kojem može pristupiti naš kod.

Sadržaj datoteke mogao bi biti:

Pozdrav Kotlinu. To je: 1. jezgrovito 2. sigurno 3. interoperabilno 4. prilagođeno alatu

Pogledajmo sada različite načine na koje možemo čitati ovu datoteku. Trebali bismo proći puni put gore stvorene datoteke kao ulaz za početne metode i relativni put u našim resursima za posljednje dvije.

2.1. forEachLine

Čita datoteku redak po redak pomoću navedenog znaka (zadana vrijednost je UTF-8) i poziva akciju za svaki redak:

zabava readFileLineByLineUsingForEachLine (fileName: String) = Datoteka (fileName) .forEachLine {println (it)}

2.2. useLines

Poziva zadani povratni poziv bloka, dajući mu slijed svih redaka u datoteci.

Nakon završetka obrade datoteka se zatvara:

zabavno readFileAsLinesUsingUseLines (fileName: String): List = Datoteka (fileName) .useLines {it.toList ()}

2.3. bufferReader

Vraća novo BufferedReader za čitanje sadržaja datoteke.

Jednom kad imamo BufferedReader, možemo pročitati sve retke u njemu:

zabavno readFileAsLinesUsingBufferedReader (Ime datoteke: String): List = Datoteka (Ime_datoteke) .bufferedReader (). readLines ()

2.4. readLines

Izravno čita sadržaj datoteke kao popis redaka:

zabavno readFileAsLinesUsingReadLines (fileName: String): List = File (fileName) .readLines ()

Ova metoda se ne preporučuje za velike datoteke.

2.5. inputStream

Konstruira novi FileInputStream za datoteku i vraća je kao rezultat.

Nakon što imamo ulazni tok, možemo ga pretvoriti u bajtove, a zatim u cjeloviti Niz:

zabavno readFileAsTextUsingInputStream (fileName: String) = Datoteka (fileName) .inputStream (). readBytes (). toString (Charsets.UTF_8)

2.6. readText

Čita cijeli sadržaj datoteke kao Niz navedeni skup znakova (zadani je UTF-8):

zabavno readFileDirectlyAsText (Ime datoteke: String): String = Datoteka (Ime datoteke) .ReadText (Charsets.UTF_8)

Ova se metoda ne preporučuje za velike datoteke i ima interno ograničenje veličine datoteke od 2 GB.

2.7. getResource

Pronalazi resurs s danim imenom i vraća a URL objekt:

zabava readFileUsingGetResource (ime datoteke: String) = ovo :: class.java.getResource (ime_datoteke) .readText (Charsets.UTF_8)

Ako pronađe resurs, vratit će a URL, koji se može obraditi pozivanjem readText metoda kao što je prikazano prije. Ako ne može pronaći resurs, vraća se null. Prilikom korištenja getResource, prešao u naziv datoteke nije apsolutno ime datoteke već naziv u odnosu na resurse našeg projekta.

2.8. getResourceAsStream

Pronalazi resurs s danim imenom i vraća datoteku InputStream primjer:

zabava readFileAsLinesUsingGetResourceAsStream (ime datoteke: String) = this :: class.java.getResourceAsStream (ime datoteke) .bufferedReader (). readLines ()

Ako pronađe resurs, vratit će datoteku InputStream, koji se mogu obraditi kao što je prikazano prije - na primjer, dobivanjem a BufferedReader. Ako ne može pronaći resurs, vraća se null. Prilikom korištenja getResourceAsStream, prešao u naziv datoteke nije apsolutno ime datoteke već naziv u odnosu na resurse našeg projekta.

3. Zaključak

U ovom smo članku vidjeli razne načine čitanja datoteke u Kotlinu. Ovisno o slučaju upotrebe, možemo se odlučiti za čitanje datoteke red po red ili je čitamo u cijelosti kao tekst. Datoteku možemo uputiti na apsolutni način ili je pronaći među resursima.

Izvorni kôd za ovaj članak nalazi se u sljedećem GitHub repo-u.


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