Tampon:
Bu bir olan bölge fiziksel bellek depolama başka bir yerden bir yere taşınırken verileri geçici olarak saklamak için kullanılan. Yani fiziksel bellek depolama olacağını RAM çoğu durumda (Rasgele erişim belleği).
Ancak bu sorunun bağlamında, Buffer veri okurken / yazarken kullanılır. Verileri bir yerden diğerine taşırken kullanılmasına gerek yoktur.
Arabellek için örnek: Sisteminizde 4 GB RAM varsa, sistem tarafından Arabellek için 4 KB bellek (RAM) ayrılabilir . KB - Kilobayt (lar), GB - Gigabayt (lar)
G / Ç Akışı (veya) Akışı:
G / Ç Akışı , bir giriş kaynağını veya bir çıkış hedefini temsil eder. Akış, disk dosyaları, aygıtlar, diğer programlar ve bellek dizileri dahil olmak üzere birçok farklı türde kaynağı ve hedefi temsil edebilir.
G / Ç, Giriş / Çıkış anlamına gelir.
Dolayısıyla, Giriş Akışı disk dosyası, ağ bağlantısı vb. Gibi bir giriş kaynağı olabilir.
Ve Çıktı Akışı, disk dosyası, ağ bağlantısı vb. Gibi bir çıktı hedefi olabilir.
Göre JAVA resmi belgeler , Akışları 3 türlüdür.
- Bayt Akışları ( Baytları okuyun veya yazın)
- Karakter Akışları ( Karakterleri okuyun veya yazın)
- Arabelleğe Alınmış Akışlar ( verimlilik için Arabellekten okuyun veya Arabelleğe yazın)
Bayt Akışları:
8 bitlik bayt giriş ve çıkışını gerçekleştirirler. Tüm bayt akışı sınıfları, InputStream ve OutputStream'den türemiştir .
Bayt Girdi Akışı sınıfları girdileri ham bayt olarak alır . Bayt Çıktı Akışı sınıfları, çıktıları ham bayt olarak verir .
InputStream
- Doğrudan Bilinen Alt Sınıflar
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream.
OutputStream
- Doğrudan Bilinen Alt Sınıflar
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
Karakter Akışları:
Bayt Akışlarının üstündeki katmandır. Karakter kodlaması kullanarak baytları (ikili veriler) karakterlere ve karakterleri bayta dönüştürürler.
Tüm karakter akışı sınıfları Reader ve Writer'dan türemiştir .
Reader
- Doğrudan Bilinen Alt Sınıflar
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
Writer
- Doğrudan Bilinen Alt Sınıflar
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
Bayt Yayınları ve Karakter Akışları kullanmak tamponsuz I / O'yu .
Bu, her okuma veya yazma talebinin doğrudan temeldeki işletim sistemi tarafından işlendiği anlamına gelir. Bu, bir programı çok daha az verimli hale getirebilir, çünkü bu tür isteklerin her biri genellikle disk erişimini, ağ etkinliğini veya nispeten pahalı olan diğer bazı işlemleri tetikler. Bu tür ek yükü azaltmak için, Java platformu arabelleğe alınmış G / Ç akışları uygular.
Arabelleğe Alınmış Akışlar:
Tamponlanmış giriş akışları , tampon olarak bilinen bir hafıza alanından verileri okur ; yerel girdi API'si yalnızca arabellek boş olduğunda çağrılır.
Benzer şekilde, arabelleğe alınmış çıktı akışları verileri bir arabelleğe yazar ve yerel çıktı API'si yalnızca arabellek dolu olduğunda çağrılır.
Bir program, arabelleğe alınmamış bir akışı , arabelleğe alınmamış akış nesnesinin bir arabelleğe alınmış akış sınıfı için yapıcıya iletildiği sarma deyimini kullanarak arabelleğe alınmış bir akışa dönüştürebilir .
Misal:
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
Arabelleğe alınmamış akışları sarmalamak için kullanılan 4 arabelleğe alınmış akış sınıfı vardır:
Arabelleğe alınmış Bayt Akışları oluşturmak için, BufferedInputStream
ve BufferedOutputStream
sınıflarını kullanın .
Arabelleğe alınmış Karakter Akışları oluşturmak için, BufferedReader
ve BufferedWriter
sınıflarını kullanın .