basic i o operations java
V tomto videonávode budeme diskutovať o mechanizme vstupu a výstupu Java, ako je napríklad vstup používateľa Java, InputStream, Java Printf, Println atď., So štandardnými I / O zariadeniami:
V každom programovacom jazyku musíme mať mechanizmus na čítanie vstupných údajov a tiež odosielanie spracovaných údajov, ktoré sú tiež známe ako výstup, koncovému používateľovi.
Ako viete, vo svete softvéru existuje veľa vstupných a výstupných zariadení, ktoré môžu programátori použiť na čítanie údajov a na zápis alebo výstup týchto údajov.
Prečítajte si naše Kompletná séria školení Java získať viac informácií o konceptoch Java.
Čo sa dozviete:
Videonávod o základných operáciách I / O v Jave
Pomocou programu Java môžete čítať a zapisovať údaje z rôznych zdrojov a cieľov. Čítanie a zápis zdrojov údajov a cieľov obsahuje:
- Súbory
- Rúry
- Sieťové pripojenia
- Vyrovnávacie pamäte v pamäti ( Napr .: polia)
- System.in, System.out, System.error
V tomto videonávode budeme mať vstup ako súbor a preskúmame rôzne triedy, rozhrania a metódy, ktoré sú k dispozícii na čítanie údajov zo súboru.
Základné operácie IO v Jave:
Operácie so súbormi Java:
Java I / O (Input-Output) je štandardný mechanizmus, ktorý spracováva vstup a generuje výstup. Balík „java.io“ obsahuje metódy na vykonávanie všetkých vstupných a výstupných operácií.
Na rýchlejšie vykonávanie I / O operácií používa Java koncept streamov. Prúd možno definovať ako postupnosť údajov pozostávajúcu z bajtov.
Dozvieme sa viac o prúdoch Java I / O !!
Štandardné I / O toky v Jave
Jazyk Java ponúka prístup k systémovým prostriedkom, štandardným vstupno-výstupným zariadeniam atď. Pomocou triedy „Systém“. Táto trieda implementuje systémovo závislé programovacie rozhranie na prístup k rôznym zdrojom.
Trieda System patrí do balíka Java „java.lang“. Okrem poskytovania štandardných vstupno-výstupných tokov poskytuje trieda System prístup aj k premenným prostredia, externým premenným, načítaniu súborov a knižníc a tiež k užitočnej metóde arrayCopy na kopírovanie časti poľa.
Pretože tento výukový program je založený iba na štandardných I / O, preskočíme tu ostatné zariadenia poskytované triedou System.
Z pohľadu Input-Output ponúka trieda System nasledujúce streamy:
c ++ dvojnásobne prepojený zoznam
# 1) Štandardný vstupný prúd (System.in)
Vstupný prúd poskytovaný triedou System System.in sa používa na čítanie vstupných údajov zo štandardného vstupného zariadenia, ako je klávesnica.
Stream zostáva otvorený a je pripravený na načítanie údajov dodaných používateľom do štandardného vstupného zariadenia.
Nasledujúci príklad demonštruje funkciu System.in.read na čítanie jednej celočíselnej číslice.
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); } }
Výkon:
# 2) Štandardný výstupný prúd (System.out)
Rozhranie System.out triedy System sa používa na zápis výstupu programu na štandardné výstupné zariadenie, ako je monitor. Vo väčšine prípadov rozhranie System.out zapisuje výstup príkazu na štandardné výstupné zariadenie.
Používa tri metódy z triedy „PrintStream“, pretože štandardný výstup je odvodený z tejto triedy.
Ide o tieto metódy:
- tlačiť
- println
- napíš
Metódy „print“ a „println“ majú rovnakú funkcionalitu až na jediný rozdiel, že metóda println pripojí k výstupu znak nového riadku ( n).
Metóda zápisu sa nepoužíva často, s výnimkou prípadov, keď sa majú zobraziť údaje, ktoré nie sú vo formáte ASCII.
Nasledujúci príklad demonštruje prúd 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); } }
Výkon:
Vyššie uvedený program zobrazuje funkcie „print“ a „println“ používané s rozhraním System.out. Tu sme definovali premenné rôznych dátových typov a každú z nich zobrazujeme pomocou rozhrania System.out.
# 3) Štandardný prúd chýb (System.err)
Na zobrazovanie chýb počas vykonávania programu sa používa štandardný prúd chýb System.err.
Rovnako ako prúd System.out, prúd chýb tiež podporuje tri metódy triedy PrintStream, tlač, tlač a zápis.
Metódy na čítanie vstupu z konzoly
Okrem vyššie opísaného vstupného toku existuje ešte niekoľko metód, pomocou ktorých môžeme načítať vstupné údaje z konzoly v prostredí Java.
Tieto metódy sú diskutované nižšie.
# 1) Trieda BufferedReader
Trieda BufferedReader bola prvýkrát predstavená v JDK 1.0 a je klasickou metódou čítania vstupných údajov z konzoly.
Vstupný prúd (System.in) je zabalený vo vnútri triedy InputStreamReader, ktorá je zase zabalená do BufferedReader.
Nasledujúci program ukazuje použitie triedy BufferedReader na čítanie vstupných údajov od používateľa.
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); } }
Výkon:
Vo vyššie uvedenom programe sme deklarovali objekt triedy BufferedReader inicializovaný na prúd System.in. Pomocou tohto objektu sme prečítali celý riadok vstupu.
Ako vidíte, môžete načítať všetky dáta vo vyrovnávacej pamäti, čo robí túto funkčnosť veľmi efektívnu. Jedinou nevýhodou je kryptický kód, ktorý si zakaždým môže byť ťažké zapamätať.
# 2) Trieda konzoly
Na načítanie vstupu z konzoly je možné použiť triedu „System.console“. Používa sa najmä na čítanie vstupných znakov, ako je heslo, z príkazového riadku.
Metóda čítania vstupných údajov pomocou triedy konzoly je v súčasnosti najefektívnejšou a preferovanou metódou v prostredí Java.
Nasledujúci program demonštruje triedu 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); } }
Výkon:
Pomocou triedy System.console môžete čítať vstupné znaky bez opakovania znakov. Preto je táto metóda užitočnejšia na čítanie hesiel. Po druhé, na formátovanie vstupných údajov môžete tiež použiť formátovacie reťazce, podobné tým, ktoré sa používajú v System.out.printf ().
Aj keď je to preferovaný spôsob čítania vstupných údajov, nezabudnite, že triedu System.console nie je možné použiť v prostredí interaktívnej Javy, ako sú IDE.
# 3) Skener
Používanie triedy skenera na čítanie vstupných údajov je pravdepodobne najrýchlejšia a preferovaná metóda. Skener sa väčšinou používa na analýzu dátových typov vrátane primitívnych typov a reťazcov. Môže sa ale tiež použiť na načítanie vstupných údajov a ich analýzu pomocou tokenizovaného vstupu.
Trieda skenera používa na tento účel regulárne výrazy.
Nasledujúci program načíta vstupné údaje od používateľa pomocou triedy skenerov.
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); } }
Výkon:
Vo vyššie uvedenom programe sme na čítanie reťazcových a celočíselných údajov použili triedu skenerov.
Formátovanie výstupu v Jave pomocou printf
Už sme videli, ako zobraziť výstup v programe Java. V tejto časti uvidíme, ako naformátovať tento výstup. Na tento účel využívame funkciu printf triedy „PrintStream“ spolu s prúdom Java „System.out“.
Funkcia printf v Jave je podobná funkcii printf v C / C ++. Na rozdiel od funkcií System.out.print a System.out.println, ktoré prijímajú jeden argument, System.out.printf trvá viac ako jeden argument.
Nasledujú variácie funkcie printf v Jave.
Nie | Funkčný prototyp | Popis |
---|---|---|
1 | System.out.printf (reťazec); | Vypíše reťazec uvedený v argumente bez formátovania |
dva | System.out.printf (formát, argumenty); | Vytlačí výstup pomocou zadaného formátovacieho reťazca „format“ a argumentov. |
3 | System.out.printf (miestne nastavenie, formát, argumenty); | Vypíše výstup pomocou zadaného formátovacieho reťazca použitím miestneho nastavenia a argumentov. |
Upozorňujeme, že funkcia System.out.format () je rovnaká ako System.out.printf ().
Všeobecná syntax na určenie reťazca formátu je nasledovná:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.
Napríklad:
System.out.println(“ ‘%05.2f’%n”, 2.28);
Vygeneruje nasledujúci výstup:
‘02 .28 ’
Printf v Jave sa budeme podrobne venovať v ďalších témach tohto tutoriálu.
často kladené otázky
Otázka č. 1) Čo sú štandardný vstup a štandardný výstup?
Odpoveď: Štandardné vstupné a výstupné toky sú vopred spojené kanály na komunikáciu medzi počítačovým programom a vonkajším prostredím, keď program začne vykonávať. Tri rôzne štandardné I / O toky sú štandardný vstup (stdin), štandardný výstup (stdout), štandardná chyba (stderr).
Otázka č. 2) Čo je štandardný vstup v programovaní?
Odpoveď: Štandardný vstup alebo štandardný vstup je prúd používaný na čítanie vstupu zo štandardného vstupného zariadenia, napríklad z klávesnice.
Otázka č. 3) Čo je vstupno-výstupný prúd?
Odpoveď: Vstupno-výstupný prúd predstavuje zdroj, z ktorého čítate vstup, a cieľ, do ktorého smerujete svoj výstup.
Stream vo všeobecnosti predstavuje veľa zariadení, ktoré sa používajú ako zdroj a ciele, konkrétne klávesnica, súbor na disku, monitory atď.
Otázka č. 4) Čo je štandardný vstup v Jave?
Odpoveď: Štandardný vstup v jazyku Java poskytuje trieda System ako prúd System.in. Trieda System je súčasťou balíka java.lang.
Otázka č. 5) Aký je štandardný výstup v Jave?
Odpoveď: Štandardný výstup v Jave poskytuje trieda System ako stream System.out. Trieda System je súčasťou balíka java.lang.
Ďalšie príklady - vstupné / výstupné toky
Prúdy predstavujú tok údajov a tieto údaje môžu byť v ľubovoľnom formáte (napríklad bajt, text, primitívny údajový typ atď.). Na zápis dát do cieľového miesta sa použije výstupný prúd a na načítanie údajov sa použije vstupný prúd.
Rôzne formáty na čítanie a písanie
Vstup / výstup je možné čítať / zapisovať v nasledujúcich rôznych formátoch:
# 1) Čítanie súboru ako bajtového streamu
Tu sa údaje načítajú v bajtovom formáte. „ FileInputStream ” a „ FileOutputStream „Triedy sa používajú na čítanie obsahu ako bajtu. Takto pre každý bajt pošle kompilátor požiadavku na 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) Čítanie súboru ako prúd znakov
Týmto spôsobom sa bude vstupný prúd čítať v znakovom formáte. Takže pre každý znak kompilátor odošle požiadavku do OS. „ FileReader ” a „ FileWriter ” triedy sú užitočné na čítanie obsahu ako postavy.
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) Ukladanie do vyrovnávacej pamäte vstupného / výstupného toku
Keď použijete triedy FileInputStream alebo FileReader, pre každú operáciu čítania alebo zápisu sa do OS odošle nová požiadavka. To teda môže viesť k problémom s výkonom. Aby sa tomu zabránilo BufferedInputStream alebo BufferedReader, triedy sa používajú na zabalenie tried bez vyrovnávacej pamäte.
Toto prečíta vstupný prúd, keď je vyrovnávacia pamäť prázdna.
Podobne sú triedy FileOutputStream alebo FileWriter zabalené do triedy BufferedOutputStream alebo BufferedWriter, ktorá zapisuje výstup, akonáhle je vyrovnávacia pamäť plná.
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) Čítanie ako dátový tok
V tejto metóde sa triedy DataInputStream alebo DataOutputStream používajú na čítanie a zápis obsahu ako primitívne dátové typy, ako sú boolean, char, byte, short, int, long, float, double a String. Väčšinou sa budú používať DataInputStream a 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) Čítanie ako prúd objektu
Triedy ObjectInputStream / ObjectOutputStream sú užitočné na písanie objektov do súboru a na čítanie objektov zo súboru. Na uloženie objektu do súboru by mala trieda implementovať rozhranie 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; } }
Chystáme sa vytvoriť objekt pre túto triedu „ObjectStreamDemo“ a tento objekt zapíšeme do súboru a prečítame z neho ten istý objekt.
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(); } } }
Operácie I / O súborov
Trieda súboru je užitočná na vykonávanie operácií so súbormi.
Medzi operácie so súbormi vykonávané pomocou triedy File patria:
- Vytvorte súbor
- Skontrolujte, či súbor existuje
- Získajte cestu k súboru
- Napíšte súbor
- Prečítajte si súbor
- Odstráňte súbor a premenujte ho
- Skontrolujte povolenia súborov a zmeňte povolenia súborov
- Presuňte súbor z jedného adresára do iného umiestnenia
Demo program na vytvorenie, čítanie a zápis súboru:
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(); } } }
Kľúčové body, ktoré je potrebné poznamenať:
- Prúd je logické znázornenie toku údajov.
- Dáta môžete čítať / zapisovať v inom formáte, ako je bajt, znak, objekt, primitívny údajový typ.
- Trieda súboru sa používa na vytvorenie súboru, jeho odstránenie a presunutie, kopírovanie alebo premenovanie súboru.
- BufferedInputStream alebo BufferedOutputStream sa používa na zlepšenie výkonu pomocou vyrovnávacej pamäte dát.
Záver
Java má balík java.lang, ktorý poskytuje štandardné vstupné a výstupné vybavenie pomocou triedy System.
Okrem prúdov System.in a System.out, ktoré sa používajú na štandardný vstup a výstup, existujú aj ďalšie metódy, ako napríklad BufferedReader, trieda konzoly a trieda skenera, ktoré sa používajú na čítanie vstupu od používateľa.
Stream System.out používa na zobrazenie výstupu funkciu triedy „PrintStream“, print a println. Toto sú funkcie, ktoré sa používajú na zobrazenie výstupu bez formátovania. Ďalšia funkcia „printf“, ktorá je podobná funkcii printf v C / C ++, sa tiež používa v Jave na formátovaný výstup.
Viac sa budeme zaoberať triedou skenerov a funkciou printf v Jave v našich pripravovaných tutoriáloch.
=> Navštívte tu sériu exkluzívnych výukových programov Java.
Výukový program PREV | NEXT Tutorial
Odporúčané čítanie
- Základné operácie vstupu / výstupu v C ++
- Operácie so vstupom a výstupom súboru v C ++
- Výukový program Java Collections Framework (JCF)
- Nasadenie Java: Vytvorenie a vykonanie súboru Java JAR
- Virtuálny stroj Java: Ako JVM pomáha pri spúšťaní aplikácií Java
- Vstup-výstup a súbory v Pythone (otvorený Python, čítanie a zápis do súboru)
- Modifikátory prístupu v Jave - návod s príkladmi
- Výukový program Java Reflection s príkladmi