Akış, sürekli bir veri akışıdır. Java'da G/Ç akışları, giriş kaynaklarından okumak veya dosyalar gibi çıktı hedeflerine yazmak için kullanılır. Verilere sırayla erişmenin bir yolunu sağlarlar. Java.io paketi hem bayt akışlarını hem de karakter akışlarını işlemek ve ayrıca bunlar arasında dönüşüm yapmak için sınıflar içerir.
- Giriş Akışı: kaynaktan veri okur.
- Çıkış Akışı: verileri bir hedefe yazar.
Bayt Akışı Üzerinden Karakter Akışı ne zaman kullanılmalı:
Java'da karakterler Unicode kuralları kullanılarak saklanır. Metin dosyalarını işlemek istediğimizde karakter akışı kullanışlıdır. Bu metin dosyaları karakter karakter işlenebilir. Karakter boyutu genellikle 16 bittir.
Karakter Akışı Üzerinden Bayt Akışı ne zaman kullanılır?
Java'da faktöriyel
Bayt odaklı bayt bayt okur. Bir bayt akışı, ikili dosyalar gibi ham verileri işlemek için uygundur.
Yukarıdaki akışlardan herhangi birini kullanırken ve bunlarla ilgilenirken önemli noktalar:
- Karakter akışı sınıfları genellikle Okuyucu/Yazıcı ile sona ererken bayt akışı sınıfları ise GirişStream/ÇıkışStream ile sona erer.
- Bu makaledeki örnek kodlar, daha az verimli olan arabelleğe alınmamış akışları kullanır. Daha iyi performans için bunları genellikle BufferedReader/BufferedWriter (karakter akışları) veya BufferedInputStream/BufferedOutputStream (bayt akışları) ile sarıyoruz.
- Kaynakları serbest bırakmak ve hataları önlemek için kullanımdan sonra akışları daima kapatın.
- Dosyalar mevcut olmayabileceğinden yukarıdaki kodlar çevrimiçi derleyicilerde çalışmayabilir.
Karakter Akışı
Java'da karakterler Unicode kuralları kullanılarak saklanır. Karakter akışı otomatik olarak verileri karakter karakter okumamıza/yazmamıza olanak tanır. Örneğin FileReader ve FileWriter, kaynaktan okumak ve hedefe yazmak için kullanılan karakter akışlarıdır.
java'daki csv dosyasından okuyun
Karakter AkışlarıÖrnek
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null as we have not read anything FileReader sourceStream = null; try { // Reading from file sourceStream = new FileReader('/Users/mayanksolanki/Desktop/demo.rtf'); // Reading sourcefile and writing content to target file character by character. int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) System.out.println((char)temp); System.out.print('Program successfully executed'); } finally { if (sourceStream != null) sourceStream.close(); } } }
Çıkış:
İçeriği hedef dosyaya karakter karakter yazar
Program başarıyla yürütüldü
farkı kes ve sil
Bayt Akışı
Java'daki bayt akışı, ham 8 bitlik ikili verilerin girişini ve çıkışını işleyen bir akıştır. Esas olarak görüntüler, ses, video veya herhangi bir ikili dosya gibi metin olmayan verileri okumak ve yazmak için kullanılır. Örneğin Dosya Giriş Akışı kaynaktan okumak için, FileOutputStream ise hedefe yazmak için kullanılır.
Örnek:
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null ot objects for reading and writing to file FileInputStream sourceStream = null; FileOutputStream targetStream = null; try { // Passing the files via local directory sourceStream = new FileInputStream('/Users/mayanksolanki/Desktop/demo.rtf'); targetStream = new FileOutputStream('/Users/mayanksolanki/Desktop/democopy.rtf'); // Reading source file and writing content to file byte by byte int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) targetStream.write((byte)temp); System.out.print('Program successfully executed'); } // finally block that executes for sure where we are closing file connections to avoid memory leakage finally { if (sourceStream != null) sourceStream.close(); if (targetStream != null) targetStream.close(); } } }
Çıkış:
Program başarıyla yürütüldü
Karakter Akışı ve Bayt Akışı Farkları
| Bakış açısı | Karakter Akışı | Bayt Akışı |
|---|---|---|
| İşlenen veri türü | 16 bit Unicode karakterler (metin) | 8 bit ham veri (ikili) |
| Dersler şununla bitiyor: | Okuyucu / Yazar | Giriş Akışı / Çıkış Akışı |
| Şunun için uygun: | Metin dosyaları Unicode verileri | Görüntüler ses video ikili dosyaları |
| Dönüşüm | Baytları otomatik olarak karakterlere dönüştürür | Ham baytlarla hiçbir dönüşüm çalışmaz |
| Örnekler | Dosya Okuyucu Dosya Yazarı | FileInputStream FileOutputStream |
İlgili Makale
- Java IO - Örneklerle Java'da Giriş/Çıkış