basic i o operations java
I denne videovejledning diskuterer vi Java Input-Output Mechanism såsom Java User Input, InputStream, Java Printf, Println osv. Med standard I / O-enheder:
På hvert programmeringssprog skal vi have en mekanisme til at læse inputdata og også sende de behandlede data, der også er kendt som Output til slutbrugeren.
Som du er opmærksom på, er der mange input- og outputenheder i softwareverdenen, som programmører kan bruge til at læse data fra og skrive eller output data til.
Læs vores Komplet Java-træningsserie for at få mere indsigt i Java-koncepter.
Hvad du lærer:
- Videoundervisning om grundlæggende I / O-operationer i Java
- Yderligere eksempler - Input / Output Streams
- Konklusion
Videoundervisning om grundlæggende I / O-operationer i Java
Ved hjælp af et Java-program kan du læse og skrive data fra forskellige kilder og destinationer. Læsning og skrivning af datakilder og destinationer inkluderer:
- Filer
- Rør
- Netværksforbindelser
- In-memory buffere ( For eksempel: arrays)
- System.in, System.out, System.error
I denne video-tutorial får vi input som en fil og udforsker forskellige klasser, grænseflader og metoder, der er tilgængelige til at læse data fra filen.
Grundlæggende IO-operationer i Java:
Java-filhandlinger:
Java I / O (Input-Output) er en standardmekanisme, der behandler input og genererer output. Pakken “java.io” indeholder metoderne til at udføre alle input og output operationer.
For at udføre I / O-operationer hurtigere bruger Java begrebet streams. En stream kan defineres som en sekvens af data, der består af bytes.
Lad os lære mere om Java I / O-streams !!
Standard I / O-streams i Java
Java-sprog giver adgang til systemressourcer, standard input-output-enheder osv. Ved hjælp af en 'System' klasse. Denne klasse implementerer en systemafhængig programmeringsgrænseflade for at få adgang til forskellige ressourcer.
Systemklassen tilhører Java-pakken “java.lang”. Bortset fra at levere standard I / O-streams giver Systemklasse også adgang til miljøvariabler, eksterne variabler, indlæsning af filer og biblioteker og også en hjælpemetodematrixkopi til kopiering af en del af et array.
Da denne vejledning kun er baseret på standard I / O, springer vi resten af faciliteterne til rådighed af systemklassen her.
Fra input-output synspunkt tilbyder systemklassen følgende streams:
# 1) Standard inputstream (System.in)
Inputstrømmen leveret af systemklassen System.in bruges til at læse inputdataene fra en standardinputenhed som et tastatur.
Strømmen forbliver åben og er klar til at læse de data, der leveres af brugeren til standardinputenheden.
Nedenstående eksempel viser funktionen System.in.read til at læse et enkelt heltal.
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); } }
Produktion:
# 2) Standard outputstream (System.out)
System.out-grænsefladen i systemklassen bruges til at skrive programoutputtet til standardoutputenheden som skærmen. I de fleste tilfælde skriver System.out-grænsefladen kommandooutputtet til standardoutputenheden.
Den bruger tre metoder fra 'PrintStream' -klassen, da standardoutput kommer fra denne klasse.
Disse metoder er:
bedste task management software til windows
- println
- skrive
Metoderne 'print' og 'println' har den samme funktionalitet bortset fra en enkelt forskel, at println-metoden tilføjer et nyt linjetegn ( n) til output.
Skrivemetoden bruges ikke ofte undtagen i tilfælde, hvor ikke-ASCII-data skal vises.
Følgende eksempel demonstrerer System.out-strømmen.
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); } }
Produktion:
Ovenstående program viser funktionerne “print” og “println”, der bruges med System.out interface. Her har vi defineret variabler af forskellige datatyper og viser hver af dem ved hjælp af System.out interface.
# 3) Standardfejlstrøm (System.err)
Standardfejlstrømmen, System.err bruges til at vise eventuelle fejl under udførelsen af programmet.
Ligesom System.out-strøm understøtter fejlstrømmen også de tre metoder til PrintStream-klassen, print, println og skriver.
Metoder til at læse input fra konsollen
Bortset fra den inputstrøm, der er beskrevet ovenfor, er der få flere metoder, hvor vi kan læse inputdata fra konsollen i Java.
Disse metoder diskuteres nedenfor.
# 1) Klasse BufferedReader
Klassen BufferedReader blev først introduceret i JDK 1.0 og er den klassiske metode til læsning af inputdata fra konsollen.
Inputstrømmen (System.in) er pakket ind i klassen InputStreamReader, som igen er pakket i BufferedReader.
Det følgende program viser brugen af klassen BufferedReader til at læse inputdata fra brugeren.
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); } }
Produktion:
vinkelmåler ende til slut testramme for angularjs apps
I ovenstående program har vi erklæret et objekt af BufferedReader-klassen initialiseret til System.in stream. Ved hjælp af dette objekt læser vi en hel linje input.
Som du kan se, kan du læse hele bufrede data, hvilket gør denne funktionalitet meget effektiv. Den eneste ulempe er den kryptiske kode, der kan være svært at huske hver gang.
# 2) Konsolklasse
Klassen 'System.console' kan bruges til at læse input fra konsollen. Dette bruges til især at læse inputtegn som en adgangskode fra kommandolinjen.
Metoden til læsning af inputdata ved hjælp af konsolklassen er i øjeblikket den mest effektive og foretrukne metode i Java.
Det følgende program viser klassen 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); } }
Produktion:
Ved hjælp af System.console-klassen kan du læse inputtegnene uden at ekko karaktererne. Derfor er denne metode mere nyttig til læsning af adgangskoder. For det andet kan du også bruge formatstrenge til at formatere inputdataene, svarende til dem, der bruges i System.out.printf ().
Selvom dette er den foretrukne måde at læse inputdata på, skal klassen System.console ikke bruges med et interaktivt Java-miljø som IDE'er.
# 3) Scanner
Brug af en scannerklasse til at læse inputdata er sandsynligvis den hurtigste og foretrukne metode. Scanneren bruges mest til at parsere datatyperne inklusive primitive typer og strenge. Men det kan også bruges til at læse inputdataene og parse dem ved hjælp af tokeniseret input.
Scannerklassen bruger regelmæssige udtryk til dette formål.
Det følgende program læser inputdata fra brugeren ved hjælp af scannerklassen.
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); } }
Produktion:
I ovenstående program har vi brugt scannerklassen til at læse streng- og heltalsdataene.
Formatering af output i Java ved hjælp af printf
Vi har allerede set, hvordan man viser output i et Java-program. I dette afsnit vil vi se, hvordan denne output formateres. Vi bruger printf-funktionen i klassen “PrintStream” sammen med “System.out” -strømmen til Java til dette formål.
Printf-funktionen i Java svarer til printf-funktionen i C / C ++. I modsætning til System.out.print og System.out.println-funktioner, der tager et enkelt argument, tager System.out.printf mere end et argument.
Følgende er variationerne af printf-funktionen i Java.
Lade være med | Funktionsprototype | Beskrivelse |
---|---|---|
1 | System.out.printf (streng); | Udskriver en streng, der er angivet i argumentet uden nogen formatering |
to | System.out.printf (format, argumenter); | Udskriver output ved hjælp af specificeret formatstreng 'format' og argumenter. |
3 | System.out.printf (landestandard, format, argumenter); | Udskriver output ved hjælp af specificeret formatstreng ved at anvende landestandard og argumenter. |
Bemærk, at funktionen System.out.format () er den samme som System.out.printf ().
Den generelle syntaks til angivelse af formatstrengen er som følger:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.
For eksempel:
System.out.println(“ ‘%05.2f’%n”, 2.28);
Genererer følgende output:
'02 .28 '
Vi vil diskutere printf i Java detaljeret i de senere emner i denne vejledning.
Ofte stillede spørgsmål
Q # 1) Hvad er standard input og standard output?
Svar: Standardindgangs- og udgangsstrømme er forbundne kanaler til at kommunikere mellem computerprogrammet og det omgivende miljø, når programmet begynder dets udførelse. De tre forskellige standarder I / O-streams er standardindgang (stdin), standardoutput (stdout), standardfejl (stderr).
Q # 2) Hvad er standard input i programmering?
Svar: Standard input eller stdin er den strøm, der bruges til at læse input fra en standard inputenhed som et tastatur.
Q # 3) Hvad er Input-Output-strømmen?
Svar: En input-output-strøm repræsenterer en kilde, som du læser input fra, og den destination, du leder dit output til.
En stream repræsenterer generelt mange enheder, der bruges som kilde og destinationer, nemlig tastatur, diskfil, skærme osv.
Q # 4) Hvad er standard input i Java?
Svar: Standardindgangen i Java leveres af systemklassen som en System.in-strøm. Systemklassen er en del af java.lang-pakken.
Q # 5) Hvad er standardoutput i Java?
Svar: Standardoutputtet i Java leveres af systemklassen som en System.out-strøm. Systemklassen er en del af java.lang-pakken.
Yderligere eksempler - Input / Output Streams
Strømme repræsenterer datastrømmen, og disse data kan være i ethvert format (som byte, tekst, primitiv datatype osv.). For at skrive data til en destination bruges outputstrømmen, og for at læse dataene bruges inputstrømmen.
Forskellige formater til læsning og skrivning
Input / output kan læses / skrives som følgende forskellige formater:
# 1) Læsning af fil som byte-stream
Her læses dataene i byteformat. “ FileInputStream ” og “ FileOutputStream “Klasser bruges til at læse indholdet som en byte. På denne måde sender compileren for hver byte en anmodning til operativsystemet.
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) Læsning af fil som tegnstrøm
På denne måde læses inputstrømmen i tegnformat. Så for hvert tegn sender compileren en anmodning til operativsystemet. “ FileReader ” og “ FileWriter ” klasser er nyttige til at læse indholdet som karakteren.
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) Buffering af input / output-strømmen
Når du bruger klasserne FileInputStream eller FileReader, sendes en ny anmodning til OS for hver læse- eller skrivehandling. Så dette kan føre til præstationsproblemer. For at undgå denne BufferedInputStream eller BufferedReader bruges klasser til at indpakke ubufrede klasser.
Dette læser inputstrømmen, når bufferen er tom.
På samme måde, FileOutputStream eller FileWriter, pakkes klasser med BufferedOutputStream eller BufferedWriter for at skrive output, når bufferen er fuld.
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) Læsning som datastrøm
I denne metode, DataInputStream eller DataOutputStream, bruges klasser til at læse og skrive indholdet som primitive datatyper som boolsk, char, byte, kort, int, lang, float, dobbelt og String. For det meste bruges DataInputStream og DataOutputStream sammen.
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) Læsning som objektstrøm
ObjectInputStream / ObjectOutputStream, klasser er nyttige til at skrive objekter i en fil og læse objekterne fra filen. For at gemme objektet i en fil skal klassen implementere Serializable-grænsefladen.
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; } }
Vi skal oprette et objekt til denne klasse 'ObjectStreamDemo', og vi vil skrive objektet i en fil og læse det samme objekt fra den fil.
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(); } } }
Fil I / O-operationer
Filklasse er nyttig til udførelse af filhandlinger.
Nogle af filhandlingerne udført ved hjælp af filklassen inkluderer:
- Opret en fil
- Kontroller, om filen findes
- Få stien til filen
- Skriv filen
- Læs filen
- Slet en fil, og omdøb filen
- Kontroller filtilladelserne, og rediger filtilladelserne
- Flyt filen fra et bibliotek til et andet sted
Demoprogram til at oprette, læse og skrive filen:
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(); } } }
unix-spørgsmål til produktionssupport
Nøglepunkter, der skal bemærkes:
- En strøm er en logisk repræsentation af datastrømmen.
- Du kan læse / skrive data i et andet format som byte, karakter, objekt, primitiv datatype.
- Filklasse bruges til at oprette en fil, slette filen og flytte eller kopiere eller omdøbe filen.
- BufferedInputStream eller BufferedOutputStream bruges til at forbedre ydeevnen ved at buffere dataene.
Konklusion
Java har en java.lang-pakke, der giver standard input- og outputfaciliteter ved hjælp af systemklassen.
Bortset fra streams, System.in og System.out, der bruges til henholdsvis standard input og output, er der også andre metoder som BufferedReader, konsolklasse og scannerklasse, der bruges til at læse input fra brugeren.
System.out stream bruger 'PrintStream' klassefunktion, print og println til at vise output. Dette er de funktioner, der bruges til at vise output uden formatering. En anden funktion “printf”, der svarer til printf-funktionen i C / C ++, bruges også i Java til formateret output.
Vi vil udforske mere om scannerklasse og printf-funktion i Java i vores kommende tutorials.
=> Besøg her for den eksklusive Java-træningsundervisningsserie.
PREV-vejledning | NÆSTE vejledning
Anbefalet læsning
- Grundlæggende input / output-operationer i C ++
- Funktioner til filinputoutput i C ++
- Java Collections Framework (JCF) vejledning
- Java-implementering: Oprettelse og udførelse af Java JAR-fil
- Java Virtual Machine: Hvordan JVM hjælper med at køre Java-applikationer
- Input-output og filer i Python (Python åben, læse og skrive til fil)
- Adgang modifikatorer i Java - vejledning med eksempler
- Java Reflection Tutorial med eksempler