Java FileInputStream


ULASHISH

FileInputStream

Hozirgacha matnli fayllarni o‘qish uchun Scanner sinfidan foydalandingiz. Scanner matn uchun juda qulay, chunki u kiruvchi ma’lumotlarni qatorlar, so‘zlar yoki sonlarga ajrata oladi. Biroq ba’zan ko‘proq nazorat kerak bo‘ladi. Masalan, ikkilik ma’lumotlarni (rasmlar, audio yoki PDF fayllar kabi) o‘qiyotganda yoki xom baytlarni to‘liq nazorat qilish kerak bo‘lganda. Bunday hollarda FileInputStream’dan foydalanasiz.


Matnli faylni o‘qish (oddiy misol)

Bu misolda matnli faylni baytma-bayt (bir vaqtda bitta bayt) o‘qish va natijani belgilar ko‘rinishida chiqarish uchun FileInputStream’dan foydalaniladi:

Misol

import java.io.FileInputStream;  // Import FileInputStream
import java.io.IOException;      // Import IOException

public class Main {
  public static void main(String[] args) {
    // try-with-resources: FileInputStream will be closed automatically
    try (FileInputStream input = new FileInputStream("filename.txt")) {

      int i;  // variable to store each byte that is read

      // Read one byte at a time until end of file (-1 means "no more data")
      while ((i = input.read()) != -1) {
        // Convert the byte to a character and print it to the console
        System.out.print((char) i);
      }

    } catch (IOException e) {
      // If an error happens (e.g. file not found), print an error message
      System.out.println("Error reading file.");
    }
  }
}

Natija quyidagicha bo‘ladi:

Some text from filename.txt

Misolni ishga tushirish »

Tushuntirish: Bu dastur filename.txt’ni ochadi, uni baytma-bayt o‘qiydi va natijani konsolga belgilar ko‘rinishida chiqaradi.


Ikkilik faylni nusxalash (hayotiy misol)

FileInputStream’ning haqiqiy kuchi shundaki, u nafaqat matn, balki istalgan turdagi fayl bilan ishlay oladi. Mana rasm faylini nusxalaydigan misol:

Misol

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyFile {
  public static void main(String[] args) {
    // Copy image.jpg into copy.jpg
    try (FileInputStream input = new FileInputStream("image.jpg");
         FileOutputStream output = new FileOutputStream("copy.jpg")) {

      int i;
      while ((i = input.read()) != -1) {
        output.write(i);  // write the raw byte to the new file
      }

      System.out.println("File copied successfully.");

    } catch (IOException e) {
      System.out.println("Error handling file.");
    }
  }
}

Tushuntirish: Bu dastur image.jpg’ni o‘qiydi va uni copy.jpg’ga yozadi. U xom baytlar bilan ishlagani uchun istalgan turdagi faylni — matn, rasm, audio yoki PDF fayllarni nusxalay oladi.

Eslatma: Dastur FileOutputStream’dan ham foydalanadi. FileInputStream fayldan baytlarni o‘qish uchun ishlatilsa, FileOutputStream faylga baytlarni yozish uchun ishlatiladi. Ular birgalikda istalgan turdagi faylni nusxalash imkonini beradi.

FileOutputStream haqida keyingi bobda batafsil bilib olasiz.



To‘g‘ri sinfni tanlash

Java tilida fayllarni o‘qishning bir nechta usuli bor. Ularning har birini qachon tanlash kerakligi:

  • Scanner — oddiy matn uchun hamda sonlar yoki so‘zlarni oson ajratib olmoqchi bo‘lganingizda eng yaxshisi.
  • BufferedReader — katta matnli fayllar uchun eng yaxshisi, chunki u tezroq ishlaydi va qatorma-qator o‘qiydi.
  • FileInputStream — ikkilik ma’lumotlar (rasmlar, audio, PDF fayllar) uchun yoki xom baytlarni to‘liq nazorat qilish kerak bo‘lganda eng yaxshisi.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!