Middle
Kotlin'da fayllar va kirish/chiqish (I/O) oqimlari bilan qanday ishlash mumkin?
sobes.tech AI
AIdan javob
Kotlin standarti kutubxonasi java.io bilan ishlashni soddalashtiradigan qulay kengaytmalarni taqdim etadi.
Asosiy yondashuvlar va sinflar:
-
Fayldan o'qish:
File.readBytes(): Fayl mazmunini baytlar massiviga o'qiydi.File.readText(): Fayl mazmunini satr sifatida o'qiydi (kodingni hisobga olgan holda).File.forEachLine { ... }: Faylning har bir satrini qayta ishlaydi.File.bufferedReader(): Satrma-satr o'qish uchunBufferedReaderyaratadi.File.inputStream(): Baytlarni o'qish uchunInputStreamyaratadi.
-
Faylga yozish:
File.writeBytes(bytes): Baytlar massivini faylga yozadi.File.writeText(text, append): Satrni faylga yozadi.append = trueoxiriga qo'shish uchun.File.printWriter(): Formatlangan matn yozish uchunPrintWriteryaratadi.File.outputStream(): Baytlarni yozish uchunOutputStreamyaratadi.
-
Oqimlar bilan ishlash:
InputStream.bufferedReader():InputStreamniBufferedReaderbilan o'raladi.OutputStream.printWriter():OutputStreamniPrintWriterbilan o'raladi.- Kontentni nusxalash uchun
copyTo(outputStream)kengaytirish funksiyalari.
-
Resurslarni boshqarish (closures):
use { ... }kengaytirish funksiyalari oqimlar va o'quvchi/yazuvchilarni avtomatik ravishda yopadi, hatto istisno bo'lsa ham.
import java.io.File
fun main() {
val file = File("my_file.txt")
// Faylga yozish
file.writeText("Salom, Kotlin I/O!")
file.appendText("\nDavomi satr.")
// Satrma-satr o'qish
file.forEachLine { line ->
println(line)
}
// Faylning barcha mazmunini matn sifatida o'qish
val content = file.readText()
println("\nFaylning to'liq mazmuni:")
println(content)
// bufferedReader bilan use
file.bufferedReader().use { reader ->
reader.lines().forEach(::println) // Java Stream API yordamida o'qish
}
// Faylni nusxalash
val newFile = File("my_file_copy.txt")
file.inputStream().use { input ->
newFile.outputStream().use { output ->
input.copyTo(output) // qulay nusxalash
}
}
}
Ba'zi metodlarning taqqoslash jadvali:
| Metod | Maqsad | Ma'lumot turi | Satrma-satr / To'liq | Izoh |
|---|---|---|---|---|
readBytes() |
Baytlar bilan o'qish | ByteArray |
To'liq | Binar ma'lumotlar uchun mos |
readText() |
Matn sifatida o'qish | String |
To'liq | Matn fayllari uchun qulay |
forEachLine { } |
Har bir satrni qayta ishlash | String |
Satrma-satr | Katta matn fayllari uchun ideal |
bufferedReader() |
Buffer'langan o'quvchi yaratish | N/A | Oqim | Moslashuvchan nazorat, use talab qiladi |
writeBytes() |
Baytlarni yozish | ByteArray |
To'liq | Binar ma'lumotlar uchun mos |
writeText() |
Matn yozish | String |
To'liq / qo'shish | Matn fayllari uchun qulay |
printWriter() |
Formatlangan yozuvchi yaratish | N/A | Oqim | Formatlangan chiqish uchun qulay, use talab qiladi |
use { ... } dan foydalanish Kotlin'da I/O bilan xavfsiz ishlash uchun muhim bo'lib, resurslarni bo'shatishni kafolatlaydi. Kotlin mavjud Java sinflarini (File, InputStream, OutputStream va boshqalar) qulay funksiyalar bilan kengaytiradi.