basic i o operations java
V tej video vadnici bomo s standardnimi V / I napravami razpravljali o mehanizmu za vhodno-izhodni program Java, kot so uporabniški vhod Java, InputStream, Java Printf, Println itd.:
V vsakem programskem jeziku moramo imeti mehanizem za branje vhodnih podatkov in končnemu uporabniku poslati tudi obdelane podatke, ki jih poznamo tudi kot Izhod.
Kot veste, je v svetu programske opreme veliko vhodnih in izhodnih naprav, s katerimi lahko programerji berejo podatke in jih zapisujejo ali izpisujejo.
Preberite našo Popolna serija usposabljanja za Java pridobiti večji vpogled v koncepte Jave.
Kaj se boste naučili:
- Video vadnica o osnovnih I / O operacijah v Javi
- Dodatni primeri - vhodni / izhodni tokovi
- Zaključek
Video vadnica o osnovnih I / O operacijah v Javi
S programom Java lahko berete in pišete podatke iz različnih virov in ciljev. Viri in cilji branja in pisanja podatkov vključujejo:
- Datoteke
- Cevi
- Omrežne povezave
- Medpomnilniki ( Npr .: nizi)
- System.in, System.out, System.error
V tej video vadnici bomo imeli vhod kot datoteko in raziskovali različne razrede, vmesnike in metode, ki so na voljo za branje podatkov iz datoteke.
Osnovne operacije IO v Javi:
Delovanje datotek Java:
Java I / O (Input-Output) je standardni mehanizem, ki obdela vhod in ustvari izhod. Paket 'java.io' vsebuje metode za izvajanje vseh vhodnih in izhodnih operacij.
Za hitrejše izvajanje I / O operacij Java uporablja koncept tokov. Tok lahko definiramo kot zaporedje podatkov, sestavljeno iz bajtov.
Naučimo se več o tokovih I / O Java!
Standardni I / O tokovi v Javi
Jezik Java ponuja dostop do sistemskih virov, standardnih vhodno-izhodnih naprav itd. Z uporabo razreda 'System'. Ta razred izvaja sistemsko odvisen programski vmesnik za dostop do različnih virov.
Razred System spada v paket java.lang Java. Razred System poleg standardnih V / I tokov ponuja tudi dostop do spremenljivk okolja, zunanjih spremenljivk, nalaganja datotek in knjižnic ter tudi uporabno metodo arrayCopy za kopiranje dela polja.
Ker ta vadnica temelji samo na standardnih vhodno / izhodnih operacijah, bomo tu preskočili ostale zmogljivosti, ki jih ponuja razred System.
Z vidika vhodno-izhodnih podatkov sistemski razred ponuja naslednje tokove:
# 1) Standardni vhodni tok (System.in)
Vhodni tok, ki ga zagotavlja sistemski razred System.in, se uporablja za branje vhodnih podatkov iz standardne vhodne naprave, kot je tipkovnica.
Tok ostane odprt in je pripravljen za branje podatkov, ki jih uporabnik posreduje standardni vhodni napravi.
Spodnji primer prikazuje funkcijo System.in.read za branje ene celoštevilčne številke.
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); } }Izhod:

# 2) Standardni izhodni tok (System.out)
Vmesnik System.out razreda System se uporablja za zapisovanje izhodnih podatkov programa v standardno izhodno napravo, kot je monitor. V večini primerov vmesnik System.out zapiše izhod ukaza v standardno izhodno napravo.
Uporablja tri metode iz razreda 'PrintStream', saj iz tega izhaja standardni izhod.
Te metode so:
- natisni
- println
- piši
Metodi »print« in »println« imata enako funkcionalnost, razen ene same razlike, da metoda println izhodu doda znak nove vrstice ( n).
Metoda pisanja se ne uporablja pogosto, razen v primerih, ko bodo prikazani podatki, ki niso ASCII.
Naslednji primer prikazuje tok 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); } } Izhod:

Zgornji program prikazuje funkciji “print” in “println”, ki se uporabljata z vmesnikom System.out. Tu smo definirali spremenljivke različnih tipov podatkov in vsako od njih prikazali s pomočjo vmesnika System.out.
# 3) Standardni tok napak (System.err)
Standardni tok napak System.err se uporablja za prikaz morebitnih napak med izvajanjem programa.
Tako kot tok System.out tudi tok napak podpira tri metode razreda PrintStream, print, println in write.
Metode za branje vhodnih podatkov iz konzole
Poleg zgoraj opisanega vhodnega toka obstaja še nekaj metod, s katerimi lahko beremo vhodne podatke s konzole v Javi.
Te metode so obravnavane v nadaljevanju.
# 1) Razred BufferedReader
Razred BufferedReader je bil prvič predstavljen v JDK 1.0 in je klasična metoda branja vhodnih podatkov s konzole.
Vhodni tok (System.in) je ovit znotraj razreda InputStreamReader, ki je nato ovit v BufferedReader.
Naslednji program prikazuje uporabo razreda BufferedReader za branje vhodnih podatkov od uporabnika.
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); } } Izhod:

V zgornjem programu smo razglasili objekt razreda BufferedReader, inicializiran v tok System.in. S tem objektom preberemo celotno vrstico vnosa.
Kot lahko vidite, lahko preberete celotne medpomnjene podatke, zaradi česar je ta funkcija zelo učinkovita. Edina pomanjkljivost je kriptična koda, ki si jo je težko vsakič zapomniti.
# 2) Razred konzole
Za branje vhodnih podatkov s konzole lahko uporabite razred 'System.console'. To se uporablja za posebno branje vhodnih znakov, kot je geslo iz ukazne vrstice.
Način branja vhodnih podatkov s pomočjo razreda konzole je trenutno najučinkovitejša in najprimernejša metoda v Javi.
Naslednji program prikazuje razred 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); } } Izhod:

Z uporabo razreda System.console lahko berete vnesene znake, ne da bi jih odmevali. Zato je ta metoda bolj uporabna za branje gesel. Drugič, za formatiranje vhodnih podatkov lahko uporabite tudi nize formatiranja, podobne tistim, ki se uporabljajo v System.out.printf ().
Čeprav je to najprimernejši način branja vhodnih podatkov, upoštevajte, da razreda System.console ni mogoče uporabljati z interaktivnim okoljem Java, kot so IDE.
# 3) Optični bralnik
Uporaba razreda skenerja za branje vhodnih podatkov je verjetno najhitrejša in najprimernejša metoda. Optični bralnik se večinoma uporablja za razčlenjevanje podatkovnih vrst, vključno s primitivnimi vrstami in nizi. Lahko pa se uporablja tudi za branje vhodnih podatkov in njihovo razčlenitev z uporabo tokeniziranega vnosa.
Razred optičnega bralnika v ta namen uporablja regularne izraze.
Naslednji program prebere vhodne podatke uporabnika s pomočjo razreda optičnega bralnika.
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); } } Izhod:

V zgornjem programu smo za branje nizov in celoštevilčnih podatkov uporabili razred skenerja.
Oblikovanje izhoda v Javi z uporabo printf
Videli smo že, kako prikazati izhodne podatke v programu Java. V tem razdelku bomo videli, kako ta izhod formatirati. V ta namen uporabljamo funkcijo printf razreda 'PrintStream' skupaj s tokom Java 'System.out'.
Funkcija printf v Javi je podobna funkciji printf v C / C ++. Za razliko od funkcij System.out.print in System.out.println, ki sprejmeta en sam argument, System.out.printf zavzame več kot en argument.
Sledijo različice funkcije printf v Javi.
| Ne | Prototip funkcije | Opis |
|---|---|---|
| 1. | System.out.printf (niz); | Natisne niz v argumentu brez kakršnega koli oblikovanja |
| dva | System.out.printf (oblika, argumenti); | Natisne izhodne podatke z uporabo določene oblike zapisa 'format' in argumentov. |
| 3. | System.out.printf (področne nastavitve, oblika, argumenti); | Natisne izhod z uporabo določenega niza oblike z uporabo področne nastavitve in argumentov. |
Upoštevajte, da je funkcija System.out.format () enaka kot System.out.printf ().
Splošna sintaksa za določanje niza oblike je naslednja:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.Na primer:
System.out.println(“ ‘%05.2f’%n”, 2.28);Ustvaril bo naslednji izhod:
'02 .28 '
Podrobneje bomo o printfu v Javi razpravljali v naslednjih temah te vadnice.
Pogosto zastavljena vprašanja
V # 1) Kaj sta standardni vhod in standardni izhod?
Odgovor: Standardni vhodni in izhodni tokovi so predhodno povezani kanali za komunikacijo med računalniškim programom in zunanjim okoljem, ko se program začne izvajati. Trije različni standardi I / O tokov so standardni vhod (stdin), standardni izhod (stdout), standardna napaka (stderr).
Q # 2) Kaj je standardni vnos pri programiranju?
Odgovor: Standardni vhod ali stdin je tok, ki se uporablja za branje vnosa s standardne vhodne naprave, kot je tipkovnica.
Q # 3) Kaj je vhodno-izhodni tok?
Odgovor: Vhodno-izhodni tok predstavlja vir, s katerega berete vhod, in cilj, kamor usmerjate svoj izhod.
Tok na splošno predstavlja številne naprave, ki se uporabljajo kot vir in cilje, in sicer tipkovnico, datoteko diska, monitorje itd.
Q # 4) Kaj je standardni vnos v Javi?
Odgovor: Standardni vnos v Javi zagotavlja razred System kot tok System.in. Razred System je del paketa java.lang.
V # 5) Kaj je standardni izhod v Javi?
Odgovor: Standardni izhod v Javi zagotavlja razred System kot tok System.out. Razred System je del paketa java.lang.
Dodatni primeri - vhodni / izhodni tokovi
Pretoki predstavljajo pretok podatkov in ti podatki so lahko v kateri koli obliki (na primer bajt, besedilo, primitivni tip podatkov itd.). Za zapisovanje podatkov v cilj se uporablja izhodni tok, za branje podatkov pa vhodni tok.
Različni formati za branje in pisanje
Vhod / izhod je mogoče brati / pisati v naslednjih različnih oblikah:
# 1) Branje datoteke kot bajtni tok
Tu bodo podatki prebrani v bajtni obliki. “ FileInputStream « in ' FileOutputStream »Razredi se uporabljajo za branje vsebine kot bajt. Na ta način bo prevajalnik za vsak bajt poslal zahtevo v OS.
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) Branje datoteke kot tok znakov
Na ta način se vhodni tok bere v obliki znakov. Torej, za vsak znak bo prevajalnik poslal zahtevo v OS. “ FileReader « in ' FileWriter ' razredi so uporabni za branje vsebine kot znaka.
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) Predpomnjenje vhodnega / izhodnega toka
Ko uporabljate razrede FileInputStream ali FileReader, bo za vsako operacijo branja ali pisanja v OS poslana nova zahteva. Torej, to lahko privede do težav z zmogljivostjo. Da bi se izognili temu BufferedInputStream ali BufferedReader, se razredi uporabljajo za zavijanje nezahranjenih razredov.
Ta prebere vhodni tok, ko je vmesnik prazen.
Podobno se razredi FileOutputStream ali FileWriter zavijejo z BufferedOutputStream ali BufferedWriter, da zapišejo izhod, ko je vmesnik poln.
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) Branje kot podatkovni tok
V tej metodi, DataInputStream ali DataOutputStream, se razredi uporabljajo za branje in zapisovanje vsebine kot primitivni podatkovni tipi, kot so logične vrednosti, char, byte, short, int, long, float, double in String. Večinoma se bosta uporabila DataInputStream in DataOutputStream.
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) Branje kot objektni tok
ObjectInputStream / ObjectOutputStream, razredi so uporabni za pisanje predmetov v datoteko in branje predmetov iz datoteke. Za shranjevanje predmeta v datoteko mora razred implementirati vmesnik Serializable.
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; } } 
Ustvarili bomo objekt za ta razred 'ObjectStreamDemo', ki ga bomo zapisali v datoteko in prebrali isti predmet 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 V / I operacije
Razred datotek je uporaben za izvajanje datotek.
Nekatere datoteke, ki se izvajajo z uporabo razreda File, vključujejo:
- Ustvari datoteko
- Preverite, ali datoteka obstaja
- Poiščite pot do datoteke
- Napišite datoteko
- Preberite datoteko
- Izbrišite datoteko in jo preimenujte
- Preverite dovoljenja za datoteke in spremenite dovoljenja za datoteke
- Premaknite datoteko iz enega imenika na drugo mesto
Predstavitveni program za ustvarjanje, branje in zapisovanje 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, ki jih je treba upoštevati:
- Tok je logična predstavitev pretoka podatkov.
- Podatke lahko berete / pišete v drugačni obliki, kot so bajt, znak, predmet, primitivni podatkovni tip.
- Razred datoteke se uporablja za ustvarjanje datoteke, brisanje datoteke in premikanje, kopiranje ali preimenovanje datoteke.
- BufferedInputStream ali BufferedOutputStream se uporablja za izboljšanje zmogljivosti z medpomnjenjem podatkov.
Zaključek
Java ima paket java.lang, ki zagotavlja standardne vhodne in izhodne zmogljivosti z uporabo razreda System.
Poleg tokov, System.in in System.out, ki se uporabljata za standardni vhod oziroma izhod, obstajajo tudi druge metode, kot so BufferedReader, razred konzole in razred optičnega bralnika, ki se uporablja za branje vnosa od uporabnika.
Tok System.out uporablja funkcijo razreda 'PrintStream', print in println za prikaz izhoda. To so funkcije, ki se uporabljajo za prikaz izhoda brez formatiranja. Druga funkcija 'printf', ki je podobna funkciji printf v C / C ++, se v Java uporablja tudi za formatirani izhod.
V naslednjih vajah bomo raziskali več o razredu optičnega bralnika in funkciji printf v Javi.
=> Obiščite tukaj za ekskluzivno serijo vadnic za učenje Java.
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Osnovne vhodno / izhodne operacije v jeziku C ++
- Izhodne operacije vnosa datotek v C ++
- Vadnica za Java Collections Framework (JCF)
- Uvajanje Java: Ustvarjanje in izvajanje datoteke Java JAR
- Navidezni stroj Java: kako JVM pomaga pri zagonu aplikacije Java
- Vhodno-izhodni podatki in datoteke v Pythonu (Odpiranje, branje in pisanje v datoteko Python)
- Dostopni modifikatorji v Javi - Vadnica s primeri
- Vadnica za refleksijo Java s primeri