Gİrdİ ve Çıktı
Java platformu farklı türlerde bilgi kaynağını ve bilgi alıcısını destekler. Bir program bir bilgi kaynağından veri alabilir, bu disk üzerindeki bir dosya, bir network bağlantısı, başka bir program, standart girdi (örneğin klavye) olabilir. Benzer şekilde, bir program bir bilgi alıcısına veri gönderebilir, bu bu disk üzerindeki bir dosya, bir network bağlantısı, başka bir program, standart çıktı (örneğin monitör) olabilir. Java girdi çıktı (I/O) sisteminde akımlar bilgi kaynağından veya bilgi alıcısından bilgi alıp vermek için kullanılabilirler.
Akımlar bir bilgi kaynağından sırasal okuma veya bir bilgi kaynağına sırasal yazmadan birini desteklerler. Bilgi kaynağının veya bilgi alıcısının türünü düşünmeyinde okuma ve yazma oprasyonları hemen hemen aynıdır. Bir bilgi kaynağından veri okumak için, önce bilgi kaynağını belirterek bir akım yaratmalısınız. Sonunda akımı kapatırsınız. Benzer şekilde, bir bilg alıcısına veri yazmak için, önce bilgi kaynağını belirterek bir akım yaratmalısınız. Bundan sonra, daha fazla olduğu sürece veriyi yazarsınız. Sonunda akımı kapatırsınız.

Aslında iki çeşit akım vardır: byte tabanlı ve karakter tabanlı. Byte tabanlı akımlar akımlardan byte okur ve akımlara byte yazarlar. Bilginin akış yönüne göre byte tabanlı akımlar için girdi akımları veya çıktı akımları kullanılırlar. Girdi ve çıktı akımları ikili veri okunacağı ve yazılacağı zaman kullanılırlar. Öte yandan, karakter tabanlı akımlar akımlara karakter yazarlar ve akımlardan karakter okurlar. Okuyucu ve yazıcılar yazı tabanlı girdi ve çıktı (uygun şifreleme ile) kullanıldığı zaman kullanılırlar. Bilginin akış yönüne göre karakter tabanlı akımlar için okuyucular veya yazıcılar kullanılırlar.
Akım sınıfları java.io paketinde gerçekleştirilirler. Bu yüzden akım sınıflarını paket adsız kullanmak için programın en başında aşağıdaki "import" deyimine ihdiyaç duyarsınız:
import java.io.*;