Middle
Kā strādāt ar failiem un ievades/izvades (I/O) plūsmām Kotlin?
sobes.tech AI
Atbilde no AI
Kotlin standarta bibliotēka nodrošina ērtas paplašināšanas funkcijas darbam ar I/O, vienkāršojot mijiedarbību ar java.io.
Galvenie pieejas veidi un klases:
-
Faila lasīšana:
File.readBytes(): lasa faila saturu baitu masīvā.File.readText(): lasa faila saturu kā virkni (ņemot vērā kodējumu).File.forEachLine { ... }: apstrādā katru faila rindu.File.bufferedReader(): izveidoBufferedReaderrindu lasīšanai.File.inputStream(): izveidoInputStreambaitu lasīšanai.
-
Rakstīšana failā:
File.writeBytes(bytes): raksta baitu masīvu failā.File.writeText(text, append): raksta virkni failā.append = truepievieno beigās.File.printWriter(): izveidoPrintWriterformātētam tekstam.File.outputStream(): izveidoOutputStreambaitu rakstīšanai.
-
Plūsmu darbība:
InputStream.bufferedReader(): apvijInputStreamBufferedReader.OutputStream.printWriter(): apvijOutputStreamPrintWriter.- paplašināšanas funkcijas
copyTo(outputStream)plūsmu satura kopēšanai.
-
Resursu pārvaldība (closures):
- paplašināšanas funkcijas
use { ... }automātiski aizver plūsmas un lasītājus/rakstītājus, pat izņēmuma gadījumā.
- paplašināšanas funkcijas
import java.io.File
fun main() {
val file = File("my_file.txt")
// Rakstīšana failā
file.writeText("Sveiki, Kotlin I/O!")
file.appendText("\nTurpinājums rindā.")
// Lasīšana no faila rindās
file.forEachLine { line ->
println(line)
}
// Visa faila satura lasīšana kā virknes
val content = file.readText()
println("\nVisa faila satura:")
println(content)
// Izmantojot bufferedReader ar use
file.bufferedReader().use { reader ->
reader.lines().forEach(::println) // Java Stream API izmantošana
}
// Faila kopēšana
val newFile = File("my_file_copy.txt")
file.inputStream().use { input ->
newFile.outputStream().use { output ->
input.copyTo(output) // ērtas plūsmu kopēšanas funkcijas
}
}
}
Salīdzinājums dažiem metožu veidiem:
| Metode | Mērķis | Datu tips | Rindas/Visas | Piezīme |
|---|---|---|---|---|
readBytes() |
Lasīt baitus | ByteArray |
Visas | Piemērots bināriem datiem |
readText() |
Lasīt kā virkni | String |
Visas | Ērti teksta failiem |
forEachLine { } |
Apstrādāt katru rindu | String |
Rindas | Ideāli lieliem teksta failiem |
bufferedReader() |
Izveidot buferizētu lasītāju | N/A | Plūsma | Elastīga kontrole, prasa use |
writeBytes() |
Rakstīt baitus | ByteArray |
Visas | Piemērots bināriem datiem |
writeText() |
Rakstīt virkni | String |
Visas / Pievienot | Ērti teksta failiem |
printWriter() |
Izveidot formāta rakstītāju | N/A | Plūsma | Ērti formāta izvadei, prasa use |
Izmantojot use { ... } ir galvenais drošs veids darbam ar I/O Kotlin, nodrošinot resursu atbrīvošanu. Kotlin paplašina esošās Java klases (File, InputStream, OutputStream u.c.) ar ērtām funkcijām.