basic i o operations java
U ovom video vodiču razgovarat ćemo o mehanizmu unosa-izlaza Java, poput Java korisničkog unosa, InputStream, Java Printf, Println, itd. Sa standardnim I / O uređajima:
U svakom programskom jeziku trebamo imati mehanizam za čitanje ulaznih podataka i također slanje obrađenih podataka koji je poznat i kao izlaz za krajnjeg korisnika.
Kao što znate, u svijetu softvera postoji mnogo ulaznih i izlaznih uređaja koje programeri mogu koristiti za čitanje podataka i zapisivanje ili iznošenje podataka na njih.
Pročitajte našu Kompletna serija Java obuke kako bi stekli bolji uvid u Java koncepte.
dvostruko povezana lista c ++
Što ćete naučiti:
- Video lekcije o osnovnim I / O operacijama na Javi
- Dodatni primjeri - ulazno / izlazni tokovi
- Zaključak
Video lekcije o osnovnim I / O operacijama na Javi
Pomoću Java programa možete čitati i pisati podatke iz različitih izvora i odredišta. Čitanje i pisanje izvora podataka i odredišta uključuju:
- Datoteke
- Cijevi
- Mrežne veze
- Me uspremnici ( Npr .: nizovi)
- System.in, System.out, System.error
U ovom video vodiču imat ćemo ulaz kao datoteku i istražiti razne klase, sučelja i metode dostupne za čitanje podataka iz datoteke.
Osnovne IO operacije na Javi:
Java File Operacije:
Java I / O (Input-Output) je standardni mehanizam koji obrađuje ulaz i generira izlaz. Paket 'java.io' sadrži metode za izvođenje svih ulaznih i izlaznih operacija.
Za brže izvođenje I / O operacija Java koristi koncept tokova. Tok se može definirati kao slijed podataka koji se sastoji od bajtova.
Naučimo više o Java I / O streamovima !!
Standardni I / O streamovi u Javi
Java jezik nudi pristup sistemskim resursima, standardnim ulazno-izlaznim uređajima, itd. Pomoću klase 'System'. Ova klasa implementira programsko sučelje ovisno o sustavu za pristup različitim resursima.
Klasa System pripada paketu 'java.lang' na Javi. Osim što nudi standardne I / O tokove, klasa System također nudi pristup varijablama okoline, vanjskim varijablama, učitavanju datoteka i knjižnica, kao i uslužnu metodu arrayCopy za kopiranje dijela niza.
Kako se ovaj vodič temelji samo na standardnom I / O, ovdje ćemo preskočiti ostatak sadržaja koje nudi klasa System.
S gledišta ulaz-izlaz, klasa System nudi sljedeće tokove:
# 1) Standardni ulazni tok (System.in)
Ulazni tok koji pruža klasa System, System.in koristi se za čitanje ulaznih podataka sa standardnog ulaznog uređaja poput tipkovnice.
Tok ostaje otvoren i spreman je za čitanje podataka koje korisnik dostavlja na standardni ulazni uređaj.
Sljedeći primjer prikazuje funkciju System.in.read za čitanje jedne cjelobrojne znamenke.
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); } }Izlaz:

# 2) Standardni izlazni tok (System.out)
Sučelje System.out klase System koristi se za upisivanje izlaznih podataka programa na standardni izlazni uređaj poput monitora. U većini slučajeva sučelje System.out zapisuje izlaz naredbe na standardni izlazni uređaj.
Koristi tri metode iz klase 'PrintStream' jer standardni izlaz proizlazi iz ove klase.
Te su metode:
- ispis
- println
- pisati
Metode 'print' i 'println' imaju istu funkciju, osim jedne razlike u kojoj metoda println dodaje znak novog retka ( n) na izlaz.
Metoda pisanja ne koristi se često, osim u slučajevima kada se prikazuju podaci koji nisu ASCII.
Sljedeći primjer pokazuje potok System.out.
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); } } Izlaz:

Gornji program prikazuje funkcije 'print' i 'println' koje se koriste sa sučeljem System.out. Ovdje smo definirali varijable različitih tipova podataka i prikazali svaku od njih pomoću sučelja System.out.
# 3) Standardni tok pogreške (System.err)
Standardni tok pogrešaka System.err koristi se za prikaz pogrešaka ako ih ima tijekom izvršavanja programa.
Kao i System.out stream, tok pogreške također podržava tri metode klase PrintStream, print, println i write.
Metode za čitanje unosa s konzole
Osim gore opisanog ulaznog toka, postoji još nekoliko metoda pomoću kojih možemo čitati ulazne podatke s konzole u Javi.
O tim se metodama govori u nastavku.
# 1) BufferedReader klase
Klasa BufferedReader prvi je put predstavljena u JDK 1.0 i klasična je metoda čitanja ulaznih podataka s konzole.
Ulazni tok (System.in) umotan je u klasu InputStreamReader koja je zauzvrat umotana u BufferedReader.
Sljedeći program prikazuje upotrebu klase BufferedReader za čitanje ulaznih podataka od korisnika.
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); } } Izlaz:

U gore navedenom programu proglasili smo objekt klase BufferedReader inicijaliziran u tok System.in. Pomoću ovog objekta pročitali smo čitav redak unosa.
Kao što vidite, možete pročitati cijele baferirane podatke što ovu funkciju čini vrlo učinkovitom. Jedini nedostatak je tajnoviti kod koji se možda svaki put teško sjetiti.
# 2) Razred konzole
Klasa 'System.console' može se koristiti za čitanje unosa s konzole. To se koristi za posebno čitanje ulaznih znakova poput lozinke iz naredbenog retka.
Metoda čitanja ulaznih podataka pomoću klase konzole trenutno je najučinkovitija i najpoželjnija metoda u Javi.
Sljedeći program prikazuje klasu System.console.
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); } } Izlaz:

Korištenjem klase System.console možete čitati ulazne znakove bez ponavljanja znakova. Stoga je ova metoda korisnija za čitanje lozinki. Drugo, za formatiranje ulaznih podataka možete koristiti i nizove formatiranja, slične onima koji se koriste u System.out.printf ().
Iako je ovo preferirani način čitanja ulaznih podataka, imajte na umu da se klasa System.console ne može koristiti s interaktivnim Java okruženjem poput IDE-a.
# 3) Skener
Korištenje klase skenera za čitanje ulaznih podataka vjerojatno je najbrža i preferirana metoda. Skener se uglavnom koristi za raščlanjivanje vrsta podataka, uključujući primitivne tipove i nizove. Ali se također može koristiti za čitanje ulaznih podataka i njihovo raščlanjivanje pomoću tokeniziranog unosa.
Klasa skenera u tu svrhu koristi regularne izraze.
Sljedeći program čita ulazne podatke od korisnika pomoću klase skenera.
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); } } Izlaz:

U gore navedenom programu koristili smo klasu skenera za čitanje niza i cjelobrojnih podataka.
Formatiranje izlaza u Javi pomoću printf
Već smo vidjeli kako prikazati izlaz u Java programu. U ovom ćemo odjeljku vidjeti kako formatirati ovaj izlaz. U tu svrhu koristimo funkciju printf klase 'PrintStream' zajedno s Java-streamom 'System.out'.
Funkcija printf u Javi slična je funkciji printf u C / C ++. Za razliku od System.out.print i System.out.println funkcija koje uzimaju jedan argument, System.out.printf uzima više argumenata.
Slijede varijacije funkcije printf u Javi.
| Nemoj | Prototip funkcije | Opis |
|---|---|---|
| 1 | System.out.printf (niz); | Ispisuje niz naveden u argumentu bez ikakvog oblikovanja |
| dva | System.out.printf (format, argumenti); | Ispisuje izlaz koristeći 'format' niza određenog formata i argumente. |
| 3 | System.out.printf (lokalitet, format, argumenti); | Ispisuje izlaz pomoću niza određenog formata primjenom lokalizacije i argumenata. |
Imajte na umu da je funkcija System.out.format () ista kao System.out.printf ().
Opća sintaksa za određivanje niza formata je sljedeća:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.Na primjer:
System.out.println(“ ‘%05.2f’%n”, 2.28);Generirat će sljedeći izlaz:
’02 .28 ’
O printf-u na Javi detaljno ćemo razgovarati u kasnijim temama ovog vodiča.
Često postavljana pitanja
P # 1) Što su standardni ulaz i standardni izlaz?
Odgovor: Standardni ulazni i izlazni tokovi su unaprijed povezani kanali za komunikaciju između računalnog programa i vanjskog okruženja kada program započne svoje izvršavanje. Tri različita standardna I / O toka su standardni ulaz (stdin), standardni izlaz (stdout), standardna pogreška (stderr).
P # 2) Što je standardni ulaz u programiranju?
Odgovor: Standardni ulaz ili stdin je tok koji se koristi za čitanje unosa sa standardnog uređaja za unos poput tipkovnice.
3. pitanje) Što je ulazno-izlazni tok?
Odgovor: Ulazno-izlazni tok predstavlja izvor s kojeg čitate ulaz i odredište na koje usmjeravate svoj izlaz.
Potok općenito predstavlja mnoge uređaje koji se koriste kao izvor i odredišta, naime tipkovnicu, datoteku diska, monitore itd.
P # 4) Što je standardni unos u Javi?
Odgovor: Standardni unos u Javi pruža klasa System kao System.in stream. Klasa System dio je paketa java.lang.
5. pitanje) Što je standardni izlaz u Javi?
Odgovor: Standardni izlaz u Javi pruža klasa System kao System.out stream. Klasa System dio je paketa java.lang.
Dodatni primjeri - ulazno / izlazni tokovi
Potoci predstavljaju protok podataka i ti podaci mogu biti u bilo kojem formatu (poput bajta, teksta, primitivne vrste podataka itd.). Za upisivanje podataka u odredište koristi se izlazni tok, a za čitanje podataka koristi se ulazni tok.
Različiti formati za čitanje i pisanje
Ulaz / izlaz se mogu čitati / pisati u sljedećim različitim formatima:
# 1) Čitanje datoteke kao byte stream
Ovdje će se podaci čitati u bajt formatu. “ FileInputStream ” i ' FileOutputStream “Klase se koriste za čitanje sadržaja kao bajt. Na taj način, za svaki bajt, prevoditelj će poslati zahtjev OS-u.
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) Čitanje datoteke kao strujanja znakova
Na taj će se način ulazni tok čitati u obliku znakova. Dakle, za svaki znak, prevodilac će poslati zahtjev OS-u. “ Čitač datoteka ” i ' Datoteka ' satovi su korisni za čitanje sadržaja kao lika.
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) Međuspremnik ulazno / izlaznog toka
Kada koristite klase FileInputStream ili FileReader, za svaku operaciju čitanja ili pisanja, novi će se zahtjev poslati OS-u. Dakle, ovo može dovesti do problema s izvedbom. Da bi se izbjegao ovaj BufferedInputStream ili BufferedReader, klase se koriste za umotavanje nebuferiranih klasa.
Ovo čita ulazni tok kada je međuspremnik prazan.
Isto tako, klase FileOutputStream ili FileWriter, klase su omotane BufferedOutputStream ili BufferedWriter za pisanje rezultata nakon što se me uspremnik napuni.
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) Čitanje kao tok podataka
U ovoj metodi, DataInputStream ili DataOutputStream, klase se koriste za čitanje i pisanje sadržaja kao primitivne vrste podataka kao što su boolean, char, byte, short, int, long, float, double i String. Uglavnom će se DataInputStream i DataOutputStream koristiti zajedno.
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) Čitanje kao objektni tok
ObjectInputStream / ObjectOutputStream, klase su korisne za pisanje objekata u datoteku i čitanje objekata iz datoteke. Za spremanje objekta u datoteku, klasa bi trebala implementirati sučelje koje se može serirati.
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; } } 
Stvorit ćemo objekt za ovu klasu “ObjectStreamDemo” i zapisat ćemo taj objekt u datoteku i čitati isti objekt iz te datoteke.
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(); } } }

Datoteke I / O operacija
Klasa datoteke korisna je za izvršavanje operacija datoteka.
Neke od operacija datoteka izvršenih pomoću klase File uključuju:
- Stvorite datoteku
- Provjerite postoji li datoteka
- Doznajte put do datoteke
- Napišite datoteku
- Pročitajte datoteku
- Izbrišite datoteku i preimenujte je
- Provjerite dozvole za datoteku i promijenite dozvole za datoteku
- Premjestite datoteku iz jednog direktorija na drugo mjesto
Demo program za stvaranje, čitanje i pisanje datoteke:
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(); } } } 
Ključne točke koje treba napomenuti:
- Tok je logičan prikaz toka podataka.
- Možete čitati / pisati podatke u drugom formatu poput bajta, znaka, objekta, primitivnog tipa podataka.
- Klasa datoteke koristi se za stvaranje datoteke, brisanje datoteke i premještanje, kopiranje ili preimenovanje datoteke.
- BufferedInputStream ili BufferedOutputStream koristi se za poboljšanje izvedbe međuspremnikom podataka.
Zaključak
Java ima paket java.lang koji pruža standardne mogućnosti unosa i izlaza pomoću klase System.
Osim streamova, System.in i System.out koji se koriste za standardni ulaz, odnosno izlaz, postoje i druge metode poput BufferedReader, klase konzole i klase skenera koja se koristi za čitanje unosa od korisnika.
Stream System.out koristi funkciju klase 'PrintStream', print i println za prikaz rezultata. To su funkcije koje se koriste za prikaz rezultata bez formatiranja. Druga funkcija 'printf' koja je slična funkciji printf u C / C ++ također se koristi u Javi za formatirani izlaz.
Istražit ćemo više o klasi skenera i funkciji printf na Javi u našim nadolazećim vodičima.
=> Posjetite ovdje za ekskluzivnu seriju udžbenika za Java.
Preporučena literatura
- Osnovne ulazno / izlazne operacije na C ++
- Izlazne operacije unosa datoteke u C ++
- Vodič za Java Collections Framework (JCF)
- Implementacija Jave: Izrada i izvršavanje Java JAR datoteke
- Java virtualni stroj: kako JVM pomaže u pokretanju Java aplikacije
- Ulaz-izlaz i datoteke u Pythonu (Python otvara, čita i piše u datoteku)
- Pristupiti modifikatorima u Javi - Vodič s primjerima
- Java Vodič za refleksiju s primjerima