Sobes.tech
Junior

Java'da qanday kirish-chiqish oqim turlari mavjud?

sobes.tech AI

AIdan javob

Java'da kirish va chiqish oqimlarining (java.io) ikki asosiy toifasi mavjud:

  1. Bayt oqimlari (Byte Streams): Xom baytlar bilan ishlaydi. Rasm, audio, serializatsiya qilingan obyektlar kabi binar ma'lumotlarni ishlash uchun ishlatiladi.

    • Asosiy sinflar: InputStream (o'qish uchun) va OutputStream (yazish uchun).
    • Ma'lumot manbalari/maqsadlari uchun voris sinflar:
      • Fayllar: FileInputStream, FileOutputStream
      • Bayt massivlari: ByteArrayInputStream, ByteArrayOutputStream
      • Bufferlash: BufferedInputStream, BufferedOutputStream
      • Filtrlash/transformatsiya: FilterInputStream, FilterOutputStream (ota sinflar Buffered va boshqalar uchun)
      • Ob'ektlar (serializatsiya): ObjectInputStream, ObjectOutputStream
      • Konsoldan kirish/chiqish: System.in (InputStream), System.out (PrintStream, OutputStream kengaytiradi)
  2. Harf oqimlari (Character Streams): Unicode harflari bilan ishlaydi. Matn ma'lumotlarini ishlash uchun ishlatiladi. Ko'pincha ichki bayt oqimlaridan foydalanadi, baytlarni harflarga aylantiradi, belgilangan kodlash asosida.

    • Asosiy sinflar: Reader (o'qish uchun) va Writer (yazish uchun).
    • Voris sinflar:
      • Fayllar: FileReader, FileWriter
      • Harf massivlari: CharArrayReader, CharArrayWriter
      • Stringlar: StringReader, StringWriter
      • Bufferlash: BufferedReader, BufferedWriter
      • Filtrlash/transformatsiya: FilterReader, FilterWriter
      • Formatlangan kirish/chiqish: PrintWriter (yazish uchun), Scanner (o'qish uchun, lekin to'g'ridan-to'g'ri Reader ning vorisi emas, lekin ko'p ishlatiladi matnli kirish uchun)
      • Konsoldan kirish/chiqish: System.in (via InputStreamReader), System.out (via PrintWriter)

Xulosa jadvali:

Toifa O'qish asoslari Yozish asoslari Ishlaydi bilan Asosiy foydalanish joyi
Bayt oqimlari InputStream OutputStream Baytlar Binar ma'lumotlar, past darajadagi kirish-chiqish
Harf oqimlari Reader Writer Harflar (char) Matn ma'lumotlari, kodlash bilan ishlash

Foydalanish misoli:

// Bayt oqimi bilan fayldan o'qish
import java.io.FileInputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("data.bin")) {
            int data;
            while ((data = fis.read()) != -1) {
                // Har bir baytni ishlash
                System.out.println("O'qilgan bayt: " + data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
// Harf oqimi bilan fayldan o'qish
import java.io.FileReader;
import java.io.IOException;

public class CharStreamExample {
    public static void main(String[] args) {
        try (FileReader fr = new FileReader("data.txt")) {
            int data;
            while ((data = fr.read()) != -1) {
                // Har bir harfni ishlash
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}