Java FileOutputStream
FileOutputStream
Avvalroq FileWriter yordamida fayllarga matn yozishni o‘rgandingiz.
FileOutputStream sinfi ham shunga o‘xshash ishlaydi, ammo u ma’lumotlarni xom baytlar ko‘rinishida yozadi. Bu undan nafaqat matnli fayllar, balki ikkilik fayllar (rasmlar, PDF yoki audio fayllar kabi) uchun ham foydalanish mumkinligini anglatadi.
Matnli faylga yozish (oddiy misol)
Bu misol FileOutputStream yordamida faylga qisqa matnli string yozadi.
Eslatma: Agar fayl allaqachon mavjud bo‘lsa, uning tarkibi almashtiriladi (qayta yoziladi).
Misol
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// The text we want to write
String text = "Hello World!";
// try-with-resources: stream will be closed automatically
try (FileOutputStream output = new FileOutputStream("filename.txt")) {
output.write(text.getBytes()); // convert text to bytes and write
System.out.println("Successfully wrote to file.");
} catch (IOException e) {
System.out.println("Error writing file.");
e.printStackTrace();
}
}
}
Natija quyidagicha bo‘ladi:
Successfully wrote to file.
Tushuntirish: Bu dastur filename.txt’ni yaratadi (yoki qayta yozadi) va unga Hello World! matnini yozadi. Agar hammasi yaxshi ishlasa, konsolga "Successfully wrote to file." deb chiqaradi. Aks holda xato xabarini ko‘rsatadi.
Ikkilik faylni nusxalash (hayotiy misol)
FileOutputStream’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 b;
while ((b = input.read()) != -1) {
output.write(b); // write each 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: Oldingi sahifada baytlarni o‘qish uchun FileInputStream’ni ko‘rdingiz. Bu yerda baytlarni yozish uchun u FileOutputStream bilan juftlashtiriladi. Ular birgalikda fayllarni nusxalash imkonini beradi.
Faylga qo‘shimcha yozish (append)
Sukut bo‘yicha, agar fayl allaqachon mavjud bo‘lsa, FileOutputStream uni qayta yozadi. Buning o‘rniga yangi tarkib qo‘shish (append) uchun ikkinchi argument sifatida true uzating:
Misol
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String text = "\nAppended text!";
// true = append mode (keeps existing content)
try (FileOutputStream output = new FileOutputStream("filename.txt", true)) {
output.write(text.getBytes());
System.out.println("Successfully appended to file.");
} catch (IOException e) {
System.out.println("Error writing file.");
e.printStackTrace();
}
}
}
Natija quyidagicha bo‘ladi:
Successfully appended to file.
Tushuntirish: Bu dastur mavjud tarkibni saqlab qolgan holda filename.txt oxiriga Appended text! matnini qo‘shadi.
To‘g‘ri sinfni tanlash
Java tilida fayllarga yozishning bir nechta usuli bor. Ularning har birini qachon tanlash kerakligi:
FileWriter— oddiy matnli fayllar uchun eng yaxshisi. Sodda va foydalanish oson.BufferedWriter— katta matnli fayllar uchun eng yaxshisi, chunki u tezroq ishlaydi va yangi qatorlarni oson qo‘shish imkonini beradi.FileOutputStream— ikkilik ma’lumotlar (rasmlar, PDF, audio) uchun yoki xom baytlarni to‘liq nazorat qilish kerak bo‘lganda eng yaxshisi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
