basic i o operations java
În acest tutorial video, vom discuta despre mecanismul de intrare-ieșire Java, cum ar fi Intrarea utilizatorului Java, InputStream, Java Printf, Println etc., cu dispozitive I / O standard:
În fiecare limbaj de programare, trebuie să avem un mecanism pentru a citi datele de intrare și, de asemenea, pentru a trimite datele procesate, cunoscute și sub numele de ieșire, către utilizatorul final.
După cum știți, există multe dispozitive de intrare și ieșire în lumea software-ului pe care programatorii le pot folosi pentru a citi date și pentru a scrie sau ieși date.
Citiți prin intermediul nostru Seria completă de antrenament Java pentru a obține mai multe informații despre conceptele Java.
Ce veți învăța:
- Tutorial video despre operațiunile de bază I / O în Java
- Exemple suplimentare - Fluxuri de intrare / ieșire
- Concluzie
Tutorial video despre operațiunile de bază I / O în Java
Folosind un program Java, puteți citi și scrie date din diferite surse și destinații. Citirea și scrierea surselor de date și a destinațiilor includ:
- Dosare
- Țevi
- Conexiuni de retea
- Tampoane în memorie ( De exemplu: matrice)
- System.in, System.out, System.error
În acest tutorial video, vom avea introducerea ca fișier și vom explora diverse clase, interfețe și metode care sunt disponibile pentru a citi datele din fișier.
Operațiuni IO de bază în Java:
Operații de fișiere Java:
Java I / O (Input-Output) este un mecanism standard care procesează intrarea și generează ieșirea. Pachetul „java.io” conține metodele de efectuare a tuturor operațiunilor de intrare și ieșire.
Pentru a efectua operațiuni I / O mai repede, Java folosește conceptul de fluxuri. Un flux poate fi definit ca o secvență de date constând din octeți.
Să aflăm mai multe despre fluxurile Java I / O !!
Fluxuri I / O standard în Java
Limbajul Java oferă acces la resursele sistemului, la dispozitivele standard de intrare-ieșire etc. folosind o clasă „Sistem”. Această clasă implementează o interfață de programare dependentă de sistem pentru a accesa diverse resurse.
Clasa System aparține pachetului „java.lang” din Java. În afară de furnizarea de fluxuri I / O standard, clasa System oferă și acces la variabilele de mediu, variabile externe, încărcarea fișierelor și bibliotecilor, precum și o metodă de utilitate arrayCopy pentru copierea unei părți dintr-o matrice.
Deoarece acest tutorial se bazează numai pe I / O standard, vom sări peste restul facilităților oferite de clasa System aici.
Din punctul de vedere Input-Output, clasa System oferă următoarele fluxuri:
# 1) Flux de intrare standard (System.in)
Fluxul de intrare furnizat de clasa System, System.in este utilizat pentru a citi datele de intrare de pe un dispozitiv de intrare standard, cum ar fi o tastatură.
Fluxul rămâne deschis și este gata să citească datele furnizate de utilizator către dispozitivul de intrare standard.
Exemplul de mai jos demonstrează funcția System.in.read pentru a citi o singură cifră întreagă.
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); } }
Ieșire:
# 2) Flux de ieșire standard (System.out)
aplicația de conversie YouTube în mp4 pentru Android
Interfața System.out din clasa System este utilizată pentru a scrie ieșirea programului pe dispozitivul de ieșire standard, cum ar fi monitorul. În majoritatea cazurilor, interfața System.out scrie ieșirea comenzii pe dispozitivul de ieșire standard.
Folosește trei metode din clasa „PrintStream”, deoarece ieșirea standard derivă din această clasă.
Aceste metode sunt:
- imprimare
- println
- scrie
Metodele „print” și „println” au aceeași funcționalitate, cu excepția unei singure diferențe, prin care metoda println adaugă un caracter de linie nouă ( n) la ieșire.
Metoda de scriere nu este utilizată frecvent, cu excepția cazurilor în care urmează să fie afișate date non-ASCII.
Următorul exemplu demonstrează fluxul 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); } }
Ieșire:
Programul de mai sus prezintă funcțiile „print” și „println” utilizate cu interfața System.out. Aici am definit variabile de diferite tipuri de date și le afișăm pe fiecare folosind interfața System.out.
# 3) Flux de erori standard (System.err)
Fluxul de erori standard, System.err este utilizat pentru a afișa erori, dacă există, în timpul executării programului.
La fel ca fluxul System.out, fluxul de erori acceptă și cele trei metode ale clasei PrintStream, print, println și write.
Metode de citire a intrărilor de pe consolă
În afară de fluxul de intrare descris mai sus, mai sunt câteva metode care folosesc care să citească datele de intrare de pe consolă în Java.
Aceste metode sunt discutate mai jos.
# 1) Clasa BufferedReader
Clasa BufferedReader a fost introdusă pentru prima dată în JDK 1.0 și este metoda clasică de citire a datelor de intrare de pe consolă.
Fluxul de intrare (System.in) este înfășurat în clasa InputStreamReader care este la rândul său înfășurat în BufferedReader.
Următorul program arată utilizarea clasei BufferedReader pentru a citi datele de intrare de la utilizator.
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); } }
Ieșire:
întrebări și răspunsuri la interviu comportamental pentru analist de afaceri
În programul de mai sus, am declarat un obiect din clasa BufferedReader inițializat în fluxul System.in. Folosind acest obiect, citim o întreagă linie de intrare.
După cum puteți vedea, puteți citi toate datele tamponate, făcând această funcționalitate foarte eficientă. Singurul dezavantaj este codul criptic care ar putea fi greu de reținut de fiecare dată.
# 2) Clasa consolei
Clasa „System.console” poate fi utilizată pentru a citi intrările de pe consolă. Acesta este folosit pentru a citi în special caracterele de intrare, cum ar fi o parolă din linia de comandă.
Metoda de citire a datelor de intrare utilizând clasa consolă este în prezent cea mai eficientă și preferată metodă din Java.
Următorul program demonstrează clasa 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); } }
Ieșire:
Utilizând clasa System.console, puteți citi caracterele de intrare fără a face ecou caracterelor. Prin urmare, această metodă este mai utilă pentru citirea parolelor. În al doilea rând, puteți utiliza și șiruri de format pentru a formata datele de intrare, similare cu cele utilizate în System.out.printf ().
Deși acesta este modul preferat de citire a datelor de intrare, rețineți că clasa System.console nu poate fi utilizată cu un mediu Java interactiv, cum ar fi IDE-urile.
# 3) Scanner
Folosirea unei clase de scaner pentru a citi datele de intrare este probabil cea mai rapidă și preferată metodă. Scanerul este utilizat în principal pentru analiza tipurilor de date, inclusiv tipuri primitive și șiruri. Dar poate fi, de asemenea, utilizat pentru a citi datele de intrare și a le analiza folosind intrări tokenizate.
Clasa scanerului folosește expresii regulate în acest scop.
Următorul program citește datele de intrare de la utilizator utilizând clasa de scaner.
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); } }
Ieșire:
În programul de mai sus, am folosit clasa scanerului pentru a citi șirul și datele întregi.
Formatarea ieșirii în Java Folosind printf
Am văzut deja cum să afișăm ieșirea într-un program Java. În această secțiune, vom vedea cum să formatați această ieșire. Folosim funcția printf a clasei „PrintStream” împreună cu fluxul „System.out” din Java în acest scop.
Funcția printf în Java este similară cu funcția printf în C / C ++. Spre deosebire de funcțiile System.out.print și System.out.println care acceptă un singur argument, System.out.printf acceptă mai multe argumente.
Următoarele sunt variațiile funcției printf în Java.
Nu face | Prototipul funcției | Descriere |
---|---|---|
1 | System.out.printf (șir); | Tipărește un șir furnizat în argument fără nicio formatare |
Două | System.out.printf (format, argumente); | Tipărește rezultatul utilizând șirul de format specificat „format” și argumente. |
3 | System.out.printf (locale, format, argumente); | Tipărește ieșirea utilizând șirul de format specificat prin aplicarea localizării și a argumentelor. |
Rețineți că funcția System.out.format () este aceeași cu System.out.printf ().
Sintaxa generală pentru a specifica șirul de format este după cum urmează:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.
De exemplu:
System.out.println(“ ‘%05.2f’%n”, 2.28);
Va genera următoarea ieșire:
'02 .28 '
Vom discuta în detaliu printf în Java în subiectele ulterioare ale acestui tutorial.
întrebări frecvente
Q # 1) Ce sunt intrarea standard și ieșirea standard?
Răspuns: Fluxurile standard de intrare și ieșire sunt canale preconectate pentru a comunica între programul de computer și mediul exterior atunci când programul începe executarea acestuia. Cele trei fluxuri I / O standard diferite sunt intrare standard (stdin), ieșire standard (stdout), eroare standard (stderr).
Q # 2) Ce este intrarea standard în programare?
Răspuns: Intrarea standard sau stdin este fluxul utilizat pentru a citi intrarea de pe un dispozitiv de intrare standard, cum ar fi o tastatură.
Q # 3) Ce este fluxul de intrare-ieșire?
Răspuns: Un flux de intrare-ieșire reprezintă o sursă din care citiți intrarea și destinația către care vă direcționați ieșirea.
Un flux, în general, reprezintă multe dispozitive care sunt utilizate ca sursă și destinații și anume, tastatură, fișier disc, monitoare etc.
Q # 4) Ce este intrarea standard în Java?
Răspuns: Intrarea standard în Java este furnizată de clasa System ca un flux System.in. Clasa System face parte din pachetul java.lang.
Q # 5) Care este ieșirea standard în Java?
Răspuns: Ieșirea standard în Java este furnizată de clasa System ca un flux System.out. Clasa System face parte din pachetul java.lang.
Exemple suplimentare - Fluxuri de intrare / ieșire
Fluxurile reprezintă fluxul de date și datele pot fi în orice format (cum ar fi octet, text, tip de date primitive etc.). Pentru a scrie date într-o destinație, se utilizează fluxul de ieșire și, pentru a citi datele, se utilizează fluxul de intrare.
Diferite formate pentru citit și scris
Intrarea / ieșirea pot fi citite / scrise ca următoarele formate diferite:
# 1) Citirea fișierului ca flux de octeți
Aici datele vor fi citite în format de octeți. „ FileInputStream ” și ' FileOutputStream „Clasele sunt folosite pentru citirea conținutului ca octet. În acest fel, pentru fiecare octet, compilatorul va trimite o cerere către sistemul de operare.
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) Citirea fișierului ca flux de caractere
În acest fel, fluxul de intrare va fi citit în format de caractere. Deci, pentru fiecare caracter, compilatorul va trimite o cerere către sistemul de operare. „ FileReader ” și ' FileWriter ” orele sunt utile pentru citirea conținutului ca personaj.
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) Tamponarea fluxului de intrare / ieșire
Când utilizați clasele FileInputStream sau FileReader, pentru fiecare operație de citire sau scriere, o nouă solicitare va fi trimisă sistemului de operare. Deci, acest lucru poate duce la probleme de performanță. Pentru a evita acest BufferedInputStream sau BufferedReader, clasele sunt folosite pentru a înfășura clase nebuffered.
Aceasta citește fluxul de intrare atunci când bufferul este gol.
La fel, FileOutputStream sau FileWriter, clasele sunt împachetate cu BufferedOutputStream sau BufferedWriter pentru a scrie ieșirea odată ce bufferul este plin.
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) Citirea ca flux de date
În această metodă, clasele DataInputStream sau DataOutputStream, sunt folosite pentru a citi și scrie conținutul ca tipuri de date primitive, cum ar fi boolean, char, byte, short, int, long, float, double și String. În principal, DataInputStream și DataOutputStream vor fi utilizate împreună.
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) Citirea ca flux de obiecte
ObjectInputStream / ObjectOutputStream, clasele sunt utile pentru a scrie obiecte într-un fișier și pentru a citi obiectele din fișier. Pentru stocarea obiectului într-un fișier, clasa ar trebui să implementeze interfața 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; } }
Vom crea un obiect pentru această clasă „ObjectStreamDemo” și vom scrie acel obiect într-un fișier și vom citi același obiect din acel fișier.
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(); } } }
Operații I / O fișier
Clasa de fișiere este utilă pentru efectuarea operațiilor de fișiere.
hp alm interviu întrebări și răspunsuri
Unele dintre operațiile de fișier efectuate folosind clasa File includ:
- Creați un fișier
- Verificați dacă fișierul există
- Obțineți calea fișierului
- Scrieți fișierul
- Citiți fișierul
- Ștergeți un fișier și redenumiți fișierul
- Verificați permisiunile de fișiere și modificați permisiunile de fișiere
- Mutați fișierul dintr-un director în altă locație
Program Demo pentru a crea, citi și scrie fișierul:
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(); } } }
Puncte cheie care trebuie remarcate:
- Un flux este o reprezentare logică a fluxului de date.
- Puteți citi / scrie date într-un format diferit, cum ar fi octet, caracter, obiect, tip primitiv de date.
- Clasa de fișiere este utilizată pentru a crea un fișier, a șterge fișierul și a muta sau copia sau redenumi fișierul.
- BufferedInputStream sau BufferedOutputStream este utilizat pentru a îmbunătăți performanța prin tamponarea datelor.
Concluzie
Java are un pachet java.lang care oferă facilități standard de intrare și ieșire utilizând clasa System.
În afară de fluxuri, System.in și System.out care sunt utilizate pentru intrarea și ieșirea standard, există și alte metode, cum ar fi BufferedReader, clasa de consolă și clasa de scanare care sunt utilizate pentru a citi intrarea de la utilizator.
Fluxul System.out utilizează funcția de clasă „PrintStream”, print și println pentru a afișa ieșirea. Acestea sunt funcțiile care sunt utilizate pentru a afișa ieșirea fără formatare. O altă funcție „printf” care este similară cu funcția printf în C / C ++ este utilizată și în Java pentru ieșirea formatată.
Vom explora mai multe despre clasa scanerului și funcția printf în Java în tutorialele noastre viitoare.
=> Vizitați aici pentru seria exclusivă de instruire Java.
Lectură recomandată
- Operațiuni de intrare / ieșire de bază în C ++
- Operațiuni de ieșire de intrare fișier în C ++
- Tutorial Java Collections Framework (JCF)
- Implementarea Java: crearea și executarea fișierului Java JAR
- Mașină virtuală Java: Cum ajută JVM la rularea aplicației Java
- Intrare-ieșire și fișiere în Python (Python Deschideți, citiți și scrieți în fișier)
- Modificatori de acces în Java - Tutorial cu exemple
- Tutorial de reflecție Java cu exemple