basic i o operations java
Bu Video Eğitiminde, Java Kullanıcı Girişi, InputStream, Java Printf, Println, vb. Gibi Java Giriş-Çıkış Mekanizmasını Standart G / Ç Cihazları ile tartışacağız:
Her programlama dilinde, girdi verilerini okumak ve ayrıca Çıktı olarak da bilinen işlenmiş verileri son kullanıcıya göndermek için bir mekanizmaya ihtiyacımız var.
Bildiğiniz gibi, yazılım dünyasında programcıların veri okumak ve veri yazmak veya çıkarmak için kullanabileceği birçok giriş ve çıkış cihazı vardır.
Baştan sona okuyun Tam Java eğitim serisi Java kavramları hakkında daha fazla bilgi edinmek için.
Ne öğreneceksin:
Java'da Temel G / Ç İşlemleri Hakkında Video Eğitimi
Bir Java programı kullanarak, farklı kaynaklardan ve hedeflerden veri okuyabilir ve yazabilirsiniz. Veri kaynaklarını ve hedefleri okumak ve yazmak şunları içerir:
- Dosyalar
- Borular
- Ağ bağlantıları
- Bellek içi Tamponlar ( Örneğin: diziler)
- System.in, System.out, System.error
Bu eğitim videosunda, girdiyi bir dosya olarak alacağız ve dosyadan veri okumak için mevcut olan çeşitli sınıfları, arayüzleri ve yöntemleri keşfedeceğiz.
Java'da Temel GÇ İşlemleri:
Java Dosya İşlemleri:
Java G / Ç (Girdi-Çıktı), girdiyi işleyen ve çıktıyı üreten standart bir mekanizmadır. 'Java.io' paketi, tüm giriş ve çıkış işlemlerini gerçekleştirme yöntemlerini içerir.
G / Ç işlemlerini daha hızlı gerçekleştirmek için Java, akış kavramını kullanır. Bir akış, baytlardan oluşan bir veri dizisi olarak tanımlanabilir.
Java I / O akışları hakkında daha fazla bilgi edelim !!
Java'da Standart G / Ç Akışları
Java dili, bir “Sistem” sınıfı kullanarak sistem kaynaklarına, standart giriş-çıkış aygıtlarına vb. Erişim sağlar. Bu sınıf, çeşitli kaynaklara erişmek için sisteme bağlı bir programlama arabirimi uygular.
System sınıfı, Java'nın “java.lang” paketine aittir. Standart G / Ç akışları sağlamanın yanı sıra, Sistem sınıfı ayrıca ortam değişkenlerine, harici değişkenlere, yükleme dosyalarına ve kitaplıklara ve ayrıca bir dizinin bir bölümünü kopyalamak için bir yardımcı yöntem yöntemi olan arrayCopy'ye erişim sağlar.
bilgisayarımda ağ güvenlik anahtarı nasıl bulunur
Bu eğitim yalnızca standart G / Ç'ye dayandığından, burada Sistem sınıfı tarafından sağlanan diğer kolaylıkları atlayacağız.
Girdi-Çıktı bakış açısından, System sınıfı aşağıdaki akışları sunar:
# 1) Standart Giriş Akışı (System.in)
System sınıfı tarafından sağlanan giriş akışı System.in, klavye gibi standart bir giriş cihazından giriş verilerini okumak için kullanılır.
Akış açık kalır ve kullanıcı tarafından standart giriş cihazına sağlanan verileri okumaya hazırdır.
Aşağıdaki örnek, tek bir tamsayı basamağı okumak için System.in.read işlevini gösterir.
public class Main { public static void main(String args()) throws java.io.IOException { int ch; System.out.println('Enter the character to be displayed : '); ch = System.in.read(); System.out.println('You entered : ' + (char)ch); } }Çıktı:

# 2) Standart Çıkış Akışı (System.out)
System sınıfının System.out arayüzü, program çıktısını monitör gibi standart çıkış cihazına yazmak için kullanılır. Çoğu durumda, System.out arabirimi komut çıktısını standart çıktı aygıtına yazar.
Standart çıktı bu sınıftan türediğinden, 'PrintStream' sınıfından üç yöntem kullanır.
Bu yöntemler şunlardır:
- Yazdır
- println
- yazmak
'Print' ve 'println' yöntemleri, println yönteminin çıktıya bir satırsonu karakteri ( n) eklediği tek bir fark dışında aynı işlevselliğe sahiptir.
Yazma yöntemi, ASCII olmayan verilerin görüntüleneceği durumlar dışında sık kullanılmaz.
Aşağıdaki örnek, System.out akışını gösterir.
public class Main { public static void main(String args()) throws java.io.IOException { String stringType = 'Java Tutorial Series'; char() charTypeArray = { 'a', 'e', 'i', 'o', 'u' }; boolean booleanType = true; int integerType = 10; double doubleType = Math.PI; long longType = Long.MAX_VALUE; float floatType = Float.MIN_VALUE; System.out.println('String::' + stringType); System.out.print('Character::'); System.out.println(charTypeArray); System.out.println('Boolean::' + booleanType); System.out.println('Integer::' + integerType); System.out.println('Double::' + doubleType); System.out.println('Long::' + longType); System.out.println('Float::' + floatType); } } Çıktı:

Yukarıdaki program, System.out arayüzü ile kullanılan 'yazdırma' ve 'println' işlevlerini gösterir. Burada farklı veri türlerinin değişkenlerini tanımladık ve her birini System.out arayüzünü kullanarak görüntüledik.
# 3) Standart Hata Akışı (System.err)
Standart hata akışı olan System.err, programın yürütülmesi sırasında varsa hataları görüntülemek için kullanılır.
System.out akışı gibi, hata akışı da PrintStream sınıfının üç yöntemini destekler: print, println ve writees.
Konsoldan Giriş Okuma Yöntemleri
Yukarıda açıklanan giriş akışının yanı sıra, Java'da konsoldan giriş verilerini okuyabileceğimiz birkaç yöntem daha vardır.
Bu yöntemler aşağıda tartışılmaktadır.
# 1) Sınıf Tamponlu Okuyucu
BufferedReader sınıfı ilk olarak JDK 1.0'da tanıtıldı ve konsoldan giriş verilerini okumanın klasik yöntemidir.
Giriş akışı (System.in), daha sonra BufferedReader ile sarmalanmış olan InputStreamReader sınıfının içine sarılır.
Aşağıdaki program, kullanıcıdan giriş verilerini okumak için BufferedReader sınıfının kullanımını gösterir.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String() args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println('Enter the input string'); String name = reader.readLine(); System.out.println('You entered: ' + name); } } Çıktı:

xor java'da nasıl kullanılır
Yukarıdaki programda, System.in akışına başlatılan BufferedReader sınıfının bir nesnesini tanımladık. Bu nesneyi kullanarak, bir girdi satırının tamamını okuruz.
Gördüğünüz gibi, arabelleğe alınmış verilerin tamamını okuyarak bu işlevi çok verimli hale getirebilirsiniz. Tek dezavantajı, her seferinde hatırlanması zor olabilecek şifreli koddur.
# 2) Konsol Sınıfı
'System.console' sınıfı konsoldan giriş okumak için kullanılabilir. Bu, özellikle komut satırından bir şifre gibi giriş karakterlerini okumak için kullanılır.
Konsol sınıfını kullanarak giriş verilerini okuma yöntemi şu anda Java'da en verimli ve tercih edilen yöntemdir.
Aşağıdaki program System.console sınıfını göstermektedir.
public class Main { public static void main(String() args) { System.out.println('Enter the input string'); String name = System.console().readLine(); System.out.println('You entered: ' + name); } } Çıktı:

System.console sınıfını kullanarak, karakterleri yankılamadan girdi karakterlerini okuyabilirsiniz. Dolayısıyla, bu yöntem parolaları okumak için daha kullanışlıdır. İkinci olarak, System.out.printf () 'de kullanılanlara benzer şekilde, girdi verilerini biçimlendirmek için biçim dizelerini de kullanabilirsiniz.
Girdi verilerini okumanın tercih edilen yolu bu olsa da, System.console sınıfının IDE'ler gibi bir Etkileşimli Java ortamında kullanılamayacağını unutmayın.
# 3) Tarayıcı
Giriş verilerini okumak için bir tarayıcı sınıfı kullanmak muhtemelen en hızlı ve tercih edilen yöntemdir. Tarayıcı çoğunlukla ilkel türler ve dizeler dahil olmak üzere veri türlerini ayrıştırmak için kullanılır. Ancak, giriş verilerini okumak ve belirteçli girdi kullanarak ayrıştırmak için de kullanılabilir.
Tarayıcı sınıfı, bu amaçla düzenli ifadeler kullanır.
Aşağıdaki program, tarayıcı sınıfını kullanarak kullanıcıdan girdi verilerini okur.
import java.util.Scanner; class Main { public static void main(String args()) { Scanner myscan = new Scanner(System.in); System.out.println('Enter the input:'); String mystr = myscan.nextLine(); System.out.println('You entered a string:'+mystr); System.out.println('Enter Next input:'); int num = myscan.nextInt(); System.out.println('You entered an integer:'+num); } } Çıktı:

Yukarıdaki programda, string ve tamsayı verilerini okumak için tarayıcı sınıfını kullandık.
Printf Kullanarak Java'da Çıkışı Biçimlendirme
Çıktının bir Java programında nasıl görüntüleneceğini zaten görmüştük. Bu bölümde, bu çıktının nasıl biçimlendirileceğini göreceğiz. Bu amaçla Java'nın 'System.out' akışıyla birlikte 'PrintStream' sınıfının printf işlevini kullanırız.
Java'daki printf işlevi, C / C ++ 'daki printf işlevine benzer. Tek bir bağımsız değişken alan System.out.print ve System.out.println işlevlerinden farklı olarak, System.out.printf birden fazla bağımsız değişken alır.
Aşağıda, Java'daki printf işlevinin çeşitleri verilmiştir.
| Hayır | İşlev prototipi | Açıklama |
|---|---|---|
| bir | System.out.printf (dize); | Herhangi bir biçimlendirme olmadan bağımsız değişkende sağlanan bir dizeyi yazdırır |
| iki | System.out.printf (biçim, bağımsız değişkenler); | Çıktıyı belirtilen biçim dizesi 'biçim' ve bağımsız değişkenleri kullanarak yazdırır. |
| 3 | System.out.printf (yerel ayar, biçim, argümanlar); | Yerel ayarı ve bağımsız değişkenleri uygulayarak, belirtilen biçim dizesini kullanarak çıktıyı yazdırır. |
System.out.format () işlevinin System.out.printf () ile aynı olduğuna dikkat edin.
Biçim dizesini belirtmek için genel sözdizimi aşağıdaki gibidir:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.Örneğin:
System.out.println(“ ‘%05.2f’%n”, 2.28);Aşağıdaki çıktıyı üretecektir:
'02 .28 '
Printf'i bu eğitimin sonraki başlıklarında ayrıntılı olarak Java'da tartışacağız.
Sıkça Sorulan Sorular
S # 1) Standart Giriş ve Standart Çıkış nedir?
Cevap: Standart giriş ve çıkış akışları, program yürütülmeye başladığında bilgisayar programı ile dış ortam arasında iletişim kurmak için önceden bağlanmış kanallardır. Üç farklı standart G / Ç akışı standart giriş (stdin), standart çıkış (stdout), standart hata (stderr) 'dir.
S # 2) Programlamada Standart Giriş nedir?
Cevap: Standart giriş veya stdin, klavye gibi standart bir giriş cihazından girişi okumak için kullanılan akıştır.
S # 3) Giriş-Çıkış akışı nedir?
Cevap: Bir girdi-çıktı akışı, girdiyi okuduğunuz bir kaynağı ve çıktınızı yönlendirdiğiniz hedefi temsil eder.
Bir akış, genel olarak, kaynak ve hedef olarak kullanılan birçok cihazı, yani klavye, disk dosyası, monitörler vb.
S # 4) Java'da Standart giriş nedir?
Cevap: Java'daki standart girdi, System sınıfı tarafından bir System.in akışı olarak sağlanır. System sınıfı, java.lang paketinin bir parçasıdır.
S # 5) Java'da Standart çıktı nedir?
Cevap: Java'daki standart çıktı, System sınıfı tarafından bir System.out akışı olarak sağlanır. System sınıfı, java.lang paketinin bir parçasıdır.
Ek Örnekler - Giriş / Çıkış Akışları
Akışlar, veri akışını temsil eder ve bu veriler herhangi bir formatta (bayt, metin, ilkel veri türü vb.) Olabilir. Verileri bir hedefe yazmak için çıkış akışı kullanılır ve verileri okumak için giriş akışı kullanılır.
Okuma ve Yazma İçin Farklı Biçimler
Giriş / çıkış aşağıdaki farklı formatlarda okunabilir / yazılabilir:
# 1) Dosyayı Bayt Akışı Olarak Okuma
Burada veriler bayt formatında okunacaktır. ' FileInputStream ” ve ' FileOutputStream “Sınıflar içeriği bayt olarak okumak için kullanılır. Bu şekilde, her bayt için, derleyici işletim sistemine bir istek gönderecektir.
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ByteStreamsDemo { public static void main(String() args) throws IOException { FileInputStream fin =null; FileOutputStream fout =null; try { fin=new FileInputStream('input.txt'); fout=new FileOutputStream('out.txt'); int c; while((c=fin.read() )!= -1) { fout.write(c); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(fin!=null) { fin.close(); }if(fout!=null) { fout.close(); } } } }

# 2) Dosyayı Karakter Akışı Olarak Okuma
Bu şekilde, giriş akışı karakter formatında okunacaktır. Dolayısıyla, her karakter için derleyici işletim sistemine bir istek gönderecektir. ' Dosya Okuyucusu ” ve ' FileWriter ” sınıflar, içeriği karakter olarak okumak için kullanışlıdır.
public class CharStreamDemo { public static void main(String() args) throws IOException { FileReader input = null; FileWriter output = null; try { input = new FileReader('input.txt'); output = new FileWriter('out1.txt'); int c; while ((c = input.read()) != -1) { output.write(c); } } finally { if (input != null) { input.close(); } if (output != null) { output.close(); } } } } 
# 3) Giriş / Çıkış Akışını Tamponlama
FileInputStream veya FileReader sınıflarını kullandığınızda, her okuma veya yazma işlemi için işletim sistemine yeni bir istek gönderilir. Bu, performans sorunlarına yol açabilir. Bu BufferedInputStream veya BufferedReader'dan kaçınmak için, arabelleğe alınmamış sınıfları sarmak için sınıflar kullanılır.
Bu, arabellek boş olduğunda giriş akışını okur.
deneyimli kişiler için yazılım testi mülakat soruları
Aynı şekilde, FileOutputStream veya FileWriter sınıfları, arabellek dolduğunda çıktıyı yazmak için BufferedOutputStream veya BufferedWriter ile sarmalanır.
public class BufferedStreamDemo { public static void main(String() args) throws IOException { BufferedReader input = null; BufferedWriter output = null; try { input = new BufferedReader(new FileReader('input.txt')); output = new BufferedWriter(new FileWriter('out1.txt')); int c; while ((c = input.read()) != -1) { output.write(c); } } finally { if (input != null) { input.close(); } if (output != null) { output.close(); } } } } 
# 4) Veri Akışı Olarak Okuma
Bu yöntemde DataInputStream veya DataOutputStream sınıfları, içeriği boolean, char, byte, short, int, long, float, double ve String gibi ilkel veri türleri olarak okumak ve yazmak için kullanılır. Çoğunlukla DataInputStream ve DataOutputStream birlikte kullanılacaktır.
public class DataInputOutputStreamDemo { public static void main(String() args) { File file = new File('read.bin'); FileOutputStream fos = null; DataOutputStream dos = null; try { fos=new FileOutputStream(file); dos=new DataOutputStream(fos); dos.writeInt(50244); dos.writeDouble(400.253); dos.writeChar('d'); dos.flush(); } catch (IOException e) { e.printStackTrace(); }finally { try { if(fos!=null){ fos.close(); } if(dos!=null){ dos.close(); } } catch (Exception e) { e.printStackTrace(); } } /*Reading operation */ FileInputStream fis = null; DataInputStream dis = null; try { fis = new FileInputStream(file); dis = new DataInputStream(fis); System.out.println(dis.readInt()); System.out.println(dis.readDouble()); System.out.println(dis.readChar()); } catch (IOException e) { e.printStackTrace(); }finally { try { if(fis!=null){ fis.close(); } if(dis!=null){ dis.close(); } } catch (Exception e) { e.printStackTrace(); } } } }

# 5) Nesne Akışı Olarak Okuma
ObjectInputStream / ObjectOutputStream sınıfları, nesneleri bir dosyaya yazmak ve nesneleri dosyadan okumak için kullanışlıdır. Nesneyi bir dosyada depolamak için, sınıf Serializable arabirimini uygulamalıdır.
public class ObjectStreamDemo implements Serializable { int age ; String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 
Bu “ObjectStreamDemo” sınıfı için bir nesne oluşturacağız ve bu nesneyi bir dosyaya yazıp aynı nesneyi o dosyadan okuyacağız.
public class ObjectStreamDemoTest { public static void main(String() args) { // TODO Auto-generated method stub ObjectStreamDemo obj=new ObjectStreamDemo(); obj.setAge(32); obj.setName('bob'); try { FileOutputStream fos = new FileOutputStream('t.tmp'); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); oos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } FileInputStream fis; ObjectInputStream ois; try { fis = new FileInputStream('t.tmp'); ois = new ObjectInputStream(fis); ObjectStreamDemo obj1 = (ObjectStreamDemo)ois.readObject(); System.out.println(obj1.name); System.out.println(obj1.age); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }

Dosya G / Ç İşlemleri
Dosya sınıfı, dosya işlemleri yapmak için kullanışlıdır.
File sınıfı kullanılarak gerçekleştirilen bazı dosya işlemleri şunları içerir:
- Bir dosya oluştur
- Dosyanın mevcut olup olmadığını kontrol edin
- Dosyanın yolunu al
- Dosyayı yaz
- Dosyayı oku
- Bir dosyayı silin ve dosyayı yeniden adlandırın
- Dosya izinlerini kontrol edin ve dosya izinlerini değiştirin
- Dosyayı bir dizinden başka bir konuma taşıyın
Dosyayı oluşturmak, okumak ve yazmak için Demo Programı:
public class CreateFileDemo { public static void main(String() args) throws IOException { File newfile=new File('created.txt'); if(!newfile.exists()) { newfile.createNewFile(); System.out.println('file not exist'); } try { String FILENAME='created.txt'; String content='hi how are u'; FileWriter fwt = new FileWriter(FILENAME); BufferedWriter bwt = new BufferedWriter(fwt); bwt.write(content); System.out.println('writing completed ...'); bwt.close(); } catch (IOException e) { e.printStackTrace(); } } } 
Dikkat edilmesi gereken kilit noktalar:
- Bir akış, veri akışının mantıksal bir temsilidir.
- Verileri bayt, karakter, nesne, ilkel veri türü gibi farklı bir formatta okuyabilir / yazabilirsiniz.
- Dosya sınıfı, bir dosya oluşturmak, dosyayı silmek ve dosyayı taşımak veya kopyalamak veya yeniden adlandırmak için kullanılır.
- BufferedInputStream veya BufferedOutputStream, verileri arabelleğe alarak performansı artırmak için kullanılır.
Sonuç
Java, System sınıfını kullanarak standart giriş ve çıkış olanakları sağlayan bir java.lang paketine sahiptir.
Sırasıyla standart giriş ve çıkış için kullanılan akışlar, System.in ve System.out dışında, Tamponlu Okuyucu, konsol sınıfı ve kullanıcıdan girişi okumak için kullanılan tarayıcı sınıfı gibi başka yöntemler de vardır.
System.out akışı, çıktıyı görüntülemek için 'PrintStream' sınıf işlevini, print ve println kullanır. Bunlar, çıktıyı biçimlendirmeden görüntülemek için kullanılan işlevlerdir. C / C ++ 'daki printf işlevine benzeyen başka bir işlev olan 'printf', Java'da biçimlendirilmiş çıktı için de kullanılır.
Gelecek eğitimlerimizde Java'da tarayıcı sınıfı ve printf işlevi hakkında daha fazlasını keşfedeceğiz.
=> Özel Java Eğitimi Eğitim Dizisi İçin Burayı Ziyaret Edin.
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- C ++ 'da Temel Giriş / Çıkış İşlemleri
- C ++ 'da Dosya Giriş Çıkış İşlemleri
- Java Collections Framework (JCF) Eğitimi
- Java Dağıtımı: Java JAR Dosyasının Oluşturulması ve Yürütülmesi
- Java Sanal Makinesi: JVM, Java Uygulamasını Çalıştırmada Nasıl Yardımcı Olur?
- Python'da Giriş-Çıkış ve Dosyalar (Python Aç, Oku ve Dosyaya Yaz)
- Java'da Erişim Değiştiriciler - Örneklerle Eğitim
- Örneklerle Java Yansıtma Eğitimi