basic i o operations java
I denna videohandledning kommer vi att diskutera Java Input-Output Mechanism såsom Java User Input, InputStream, Java Printf, Println, etc. med standard I / O-enheter:
I varje programmeringsspråk behöver vi ha en mekanism för att läsa indata och även skicka bearbetade data som även kallas Output till slutanvändaren.
Som du vet är det många in- och utdataenheter i programvaruvärlden som programmerare kan använda för att läsa data från och skriva eller mata ut data till.
hur man konverterar youtube-videor till wav-filer
Läs igenom vår Komplett Java-träningsserie för att få mer insikt i Java-koncept.
Vad du kommer att lära dig:
- Videohandledning om grundläggande I / O-funktioner i Java
- Ytterligare exempel - In- / utmatningsströmmar
- Slutsats
Videohandledning om grundläggande I / O-funktioner i Java
Med hjälp av ett Java-program kan du läsa och skriva data från olika källor och destinationer. Läsning och skrivning av datakällor och destinationer inkluderar:
- Filer
- Rör
- Nätverkskopplingar
- Buffertar i minnet ( T.ex: matriser)
- System.in, System.out, System.error
I denna videohandledning kommer vi att få inmatningen som en fil och utforska olika klasser, gränssnitt och metoder som är tillgängliga för att läsa data från filen.
Grundläggande IO-operationer i Java:
Java-filåtgärder:
Java I / O (Input-Output) är en standardmekanism som bearbetar ingången och genererar utdata. Paketet 'java.io' innehåller metoderna för att utföra alla in- och utmatningsoperationer.
För att utföra I / O-operationer snabbare använder Java konceptet streams. En ström kan definieras som en sekvens av data som består av byte.
Låt oss lära oss mer om Java I / O-strömmar !!
Standard I / O-strömmar i Java
Java-språk ger tillgång till systemresurser, standardinmatningsenheter etc. med hjälp av en 'System' -klass. Denna klass implementerar ett systemberoende programmeringsgränssnitt för åtkomst till olika resurser.
Systemklassen tillhör Java-paketet 'java.lang'. Förutom att tillhandahålla standard I / O-strömmar, ger systemklassen också tillgång till miljövariabler, externa variabler, laddning av filer och bibliotek, och även en verktygsmetodkopia för kopiering av en del av en matris.
Eftersom den här guiden endast är baserad på standard I / O hoppar vi över resten av anläggningarna som tillhandahålls av systemklassen här.
Från Input-Output-synvinkel erbjuder systemklassen följande strömmar:
# 1) Standard ingångsström (System.in)
Ingångsströmmen som tillhandahålls av systemklassen System.in används för att läsa ingångsdata från en standardinmatningsenhet som ett tangentbord.
Strömmen förblir öppen och är redo att läsa data som levereras av användaren till standardinmatningsenheten.
Nedanstående exempel visar funktionen System.in.read för att läsa ett enda 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) Standardutmatningsström (System.out)
System.out-gränssnittet i systemklassen används för att skriva programutgången till standardutmatningsenheten som bildskärmen. I de flesta fall skriver System.out-gränssnittet kommandoutgången till standardutmatningsenheten.
Den använder tre metoder från 'PrintStream' -klassen eftersom standardutgången härrör från denna klass.
Dessa metoder är:
- skriva ut
- tryckln
- skriva
Metoderna “print” och “println” har samma funktionalitet förutom en enda skillnad att println-metoden lägger till en ny linjetecken ( n) till utgången.
Skrivmetoden används inte ofta utom i fall där icke-ASCII-data ska visas.
Följande exempel visar 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:
Ovanstående program visar funktionerna “print” och “println” som används med System.out-gränssnittet. Här har vi definierat variabler av olika datatyper och visar var och en av dem med System.out-gränssnittet.
# 3) Standardfelström (System.err)
Standardfelströmmen, System.err används för att visa eventuella fel under genomförandet av programmet.
Liksom System.out-strömmen stöder felströmmen också de tre metoderna i PrintStream-klassen, print, println och skriver.
Metoder för att läsa inmatning från konsolen
Förutom ingångsströmmen som beskrivs ovan finns det några fler metoder som vi kan läsa indata från konsolen i Java.
Dessa metoder diskuteras nedan.
# 1) Klass BufferedReader
Klassen BufferedReader introducerades först i JDK 1.0 och är den klassiska metoden för att läsa indata från konsolen.
Ingångsströmmen (System.in) är insvept i klassen InputStreamReader som i sin tur är insvept i BufferedReader.
Följande program visar användningen av klassen BufferedReader för att läsa indata från användaren.
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:
livscykelmodell inom programvaruteknik
I ovanstående program har vi förklarat ett objekt av BufferedReader-klassen initialiserat till System.in-strömmen. Med hjälp av detta objekt läser vi en hel rad ingångar.
Som du kan se kan du läsa hela buffrad data vilket gör den här funktionen mycket effektiv. Den enda nackdelen är den kryptiska koden som det kan vara svårt att komma ihåg varje gång.
# 2) Konsolklass
Klassen 'System.console' kan användas för att läsa inmatning från konsolen. Detta används för att särskilt läsa inmatade tecken som ett lösenord från kommandoraden.
Metoden för att läsa indata med hjälp av konsolklassen är för närvarande den mest effektiva och föredragna metoden i Java.
Följande program visar 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:
Med hjälp av System.console-klassen kan du läsa inmatningstecknen utan att upprepa tecknen. Därför är denna metod mer användbar för att läsa lösenord. För det andra kan du också använda formatsträngar för att formatera indata, liknande de som används i System.out.printf ().
Även om detta är det föredragna sättet att läsa indata, notera att klassen System.console inte kan användas med en interaktiv Java-miljö som IDE.
# 3) Skanner
Att använda en skannerklass för att läsa indata är förmodligen den snabbaste och föredragna metoden. Skannern används mest för att analysera datatyperna inklusive primitiva typer och strängar. Men det kan också användas för att läsa ingångsdata och analysera dem med tokeniserad ingång.
Skannerklassen använder reguljära uttryck för detta ändamål.
Följande program läser inmatningsdata från användaren med hjälp av skannerklassen.
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 ovanstående program har vi använt skannerklassen för att läsa sträng- och heltalsdata.
Formatera utdata i Java med hjälp av printf
Vi har redan sett hur man visar utdata i ett Java-program. I det här avsnittet kommer vi att se hur du formaterar denna utdata. Vi använder printf-funktionen i 'PrintStream' -klassen tillsammans med 'System.out' -strömmen för Java för detta ändamål.
Printf-funktionen i Java liknar printf-funktionen i C / C ++. Till skillnad från System.out.print och System.out.println-funktioner som tar ett enda argument, tar System.out.printf mer än ett argument.
Följande är variationer av printf-funktionen i Java.
Låt bli | Funktionsprototyp | Beskrivning |
---|---|---|
1 | System.out.printf (sträng); | Skriver ut en sträng som tillhandahålls i argumentet utan någon formatering |
två | System.out.printf (format, argument); | Skriver ut utdata med angiven formatsträng 'format' och argument. |
3 | System.out.printf (språk, format, argument); | Skriver ut utdata med angiven formatsträng genom att tillämpa språk och argument. |
Observera att funktionen System.out.format () är densamma som System.out.printf ().
Den allmänna syntaxen för att specificera formatsträngen är som följer:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.
Till exempel:
System.out.println(“ ‘%05.2f’%n”, 2.28);
Kommer att generera följande utdata:
'02 .28 '
Vi kommer att diskutera printf i Java i detalj i de senare ämnena i denna handledning.
Vanliga frågor
F # 1) Vad är standardinmatning och standardutmatning?
Svar: Standardinmatnings- och utgångsströmmar är föranslutna kanaler för att kommunicera mellan datorprogrammet och den omgivande miljön när programmet börjar köras. De tre olika standard I / O-strömmarna är standardingång (stdin), standardutgång (stdout), standardfel (stderr).
F # 2) Vad är standardingång vid programmering?
Svar: Standardinmatning eller stdin är strömmen som används för att läsa inmatning från en standardinmatningsenhet som ett tangentbord.
b + träd vs b träd
F # 3) Vad är Input-Output-strömmen?
Svar: En input-output-ström representerar en källa som du läser input från och den destination du riktar din output till.
En ström representerar i allmänhet många enheter som används som källa och destinationer, nämligen tangentbord, diskfil, bildskärmar etc.
F # 4) Vad är standardinmatning i Java?
Svar: Standardingången i Java tillhandahålls av systemklassen som en System.in-ström. Systemklassen är en del av paketet java.lang.
F # 5) Vad är standardutdata i Java?
Svar: Standardutmatningen i Java tillhandahålls av systemklassen som en System.out-ström. Systemklassen är en del av paketet java.lang.
Ytterligare exempel - In- / utmatningsströmmar
Strömmar representerar dataflödet och att data kan vara i vilket format som helst (som byte, text, primitiv datatyp osv.). För att skriva data till en destination används utgångsströmmen och för att läsa data används ingångsströmmen.
Olika format för läsning och skrivning
Input / output kan läsas / skrivas i följande olika format:
# 1) Läser fil som byte-ström
Här kommer informationen att läsas i byteformat. “ FileInputStream ” och “ FileOutputStream ”Klasser används för att läsa innehållet som en byte. På detta sätt skickar kompilatorn en begäran till operativsystemet för varje byte.
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äser fil som teckenström
På detta sätt kommer ingångsströmmen att läsas i teckenformat. Så för varje tecken skickar kompilatorn en begäran till operativsystemet. “ FileReader ” och “ FileWriter ” klasser är användbara för att läsa innehållet som karaktär.
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) Buffra ingångs- / utgångsströmmen
När du använder FileInputStream- eller FileReader-klasserna skickas en ny begäran till OS för varje läs- eller skrivåtgärd. Så detta kan leda till prestandafrågor. För att undvika denna BufferedInputStream eller BufferedReader används klasser för att slå in obuffrade klasser.
Detta läser ingångsströmmen när bufferten är tom.
På samma sätt, FileOutputStream eller FileWriter, lindas klasserna med BufferedOutputStream eller BufferedWriter för att skriva utdata när bufferten är full.
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 den här metoden, DataInputStream eller DataOutputStream, används klasser för att läsa och skriva innehållet som primitiva datatyper som boolean, char, byte, short, int, long, float, double och String. DataInputStream och DataOutputStream kommer oftast att användas tillsammans.
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 är användbara för att skriva objekt i en fil och läsa objekten från filen. För att lagra objektet i en fil ska klassen implementera Serializable-gränssnittet.
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 ska skapa ett objekt för denna 'ObjectStreamDemo' -klass och vi kommer att skriva objektet i en fil och läsa samma objekt från den filen.
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-funktioner
Filklass är användbar för filhantering.
Några av de filåtgärder som utförs med filklassen inkluderar:
- Skapa en fil
- Kontrollera om filen finns
- Få sökvägen till filen
- Skriv filen
- Läs filen
- Ta bort en fil och byta namn på filen
- Kontrollera filbehörigheterna och ändra filbehörigheterna
- Flytta filen från en katalog till en annan plats
Demoprogram för att skapa, läsa och skriva 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(); } } }
Viktiga punkter att notera:
- En ström är en logisk representation av dataflödet.
- Du kan läsa / skriva data i ett annat format som byte, karaktär, objekt, primitiv datatyp.
- Filklass används för att skapa en fil, ta bort filen och flytta eller kopiera eller byta namn på filen.
- BufferedInputStream eller BufferedOutputStream används för att förbättra prestanda genom att buffra data.
Slutsats
Java har ett java.lang-paket som tillhandahåller standardinmatnings- och utdatafaciliteterna med hjälp av systemklassen.
Förutom strömmarna, System.in och System.out som används för standardinmatning respektive utdata, finns det också andra metoder som BufferedReader, konsolklass och scannerklass som används för att läsa inmatning från användaren.
System.out-strömmen använder klassfunktionen 'PrintStream', skriv ut och skriv ut för att visa utdata. Dessa är de funktioner som används för att visa utdata utan formatering. En annan funktion “printf” som liknar printf-funktionen i C / C ++ används också i Java för formaterad utdata.
Vi kommer att utforska mer om skannerklass och printf-funktion i Java i våra kommande handledning.
=> Besök här för den exklusiva Java-utbildningsserien.
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- Grundläggande in- / utmatningsfunktioner i C ++
- Filinmatningsutmatningsfunktioner i C ++
- Java Collections Framework (JCF) Tutorial
- Java-distribution: Skapande och utförande av Java JAR-fil
- Java Virtual Machine: Hur JVM hjälper till att köra Java-applikationen
- Input-Output och filer i Python (Python Öppna, läs och skriv till fil)
- Åtkomstmodifierare i Java - Handledning med exempel
- Java Reflection Tutorial med exempel