Sobes.tech
Junior — Middle

Фарқи байни ҷараёнҳое, ки бо маълумоти байт кор мекунанд, ва онҳое, ки системаи файлро истифода мебаранд, чист?

sobes.tech AI

Ҷавоб аз AI

Дар Java мавҷҳо (Streams) гуногун навъанд, ва муҳим аст, ки фарқиятҳои байни мавҷҳое, ки бо маълумоти байтӣ кор мекунанд, ва онҳое, ки системаи файлҳоро истифода мебаранд, фаҳмид.

  1. Мавҷҳои маълумоти байтӣ (InputStream/OutputStream):

    • бо байтҳои хом кор мекунанд.
    • барои хондан ва навиштани маълумоти бинарӣ, мисли тасвирҳо, овоз, видео ё ҳар гуна файл дар формати бинарӣ истифода мешаванд.
    • намунаҳо: FileInputStream, BufferedInputStream, ByteArrayInputStream.
  2. Мавҷҳое, ки системаи файлҳоро истифода мебаранд (Reader/Writer):

    • бо аломатҳо (маълумоти матнӣ) кор мекунанд.
    • барои хондан ва навиштани файлҳои матнӣ бо дарназардошти кодировкаҳо пешбинӣ шудаанд.
    • намунаҳо: FileReader, BufferedReader, FileWriter.

Фарқияти асосӣ дар он аст, ки мавҷҳои байтӣ бо байтҳои хом кор мекунанд, дар ҳоле ки мавҷҳои аломатӣ бо аломатҳо, ки кори бо матнро осонтар мекунад ва кодировкаҳоро ба назар мегирад.

Масалан, намунаи хондани файл бо мавҷи байтӣ:

try (FileInputStream fis = new FileInputStream("file.bin")) {
    int data;
    while ((data = fis.read()) != -1) {
        // коркарди байти data
    }
}

Масалан, хондани файл бо мавҷи аломатӣ:

try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        // коркарди сатр line
    }
}

Аз ин рӯ, интихоби мавҷ вобаста ба навъи маълумот ва вазифа мебошад.