logo

Java'da Karakter Akışı ve Bayt Akışı

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
unicode_bytes olmayan' title=Karakter Akışları

Örnek

Java
import 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:

Java
import 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 / YazarGiriş Akışı / Çıkış Akışı
Şunun için uygun:Metin dosyaları Unicode verileriGörüntüler ses video ikili dosyaları
DönüşümBaytları otomatik olarak karakterlere dönüştürürHam baytlarla hiçbir dönüşüm çalışmaz
ÖrneklerDosya Okuyucu Dosya YazarıFileInputStream FileOutputStream

İlgili Makale

  • Java IO - Örneklerle Java'da Giriş/Çıkış