basic i o operations java
In deze videozelfstudie bespreken we het Java-invoer-uitvoermechanisme, zoals Java User Input, InputStream, Java Printf, Println, enz. Met standaard I / O-apparaten:
In elke programmeertaal hebben we een mechanisme nodig om invoergegevens te lezen en ook de verwerkte gegevens, ook wel output genoemd, naar de eindgebruiker te sturen.
Zoals u weet, zijn er veel invoer- en uitvoerapparaten in de softwarewereld die programmeurs kunnen gebruiken om gegevens uit te lezen en te schrijven of uit te voeren.
Lees onze Volledige Java-trainingsserie om meer inzicht te krijgen in Java-concepten.
Wat je leert:
- Video-tutorial over basis I / O-bewerkingen in Java
- Aanvullende voorbeelden - invoer- / uitvoerstreams
- Gevolgtrekking
Video-tutorial over basis I / O-bewerkingen in Java
Met een Java-programma kunt u gegevens uit verschillende bronnen en bestemmingen lezen en schrijven. Gegevensbronnen en bestemmingen lezen en schrijven zijn onder meer:
- Bestanden
- Buizen
- Netwerk connecties
- Buffers in het geheugen ( Bijv .: arrays)
- System.in, System.out, System.error
In deze videozelfstudie zullen we de invoer als een bestand hebben en verschillende klassen, interfaces en methoden verkennen die beschikbaar zijn om gegevens uit het bestand te lezen.
Basis IO-bewerkingen in Java:
Java-bestandsbewerkingen:
Java I / O (Input-Output) is een standaardmechanisme dat de invoer verwerkt en de uitvoer genereert. Het pakket 'java.io' bevat de methoden om alle invoer- en uitvoerbewerkingen uit te voeren.
Om I / O-bewerkingen sneller uit te voeren, gebruikt Java het concept van streams. Een stream kan worden gedefinieerd als een reeks gegevens die uit bytes bestaat.
Laten we meer leren over Java I / O-streams !!
Standaard I / O-streams in Java
Java-taal biedt toegang tot systeembronnen, standaard invoer-uitvoerapparaten, enz. Met behulp van een 'Systeem' -klasse. Deze klasse implementeert een systeemafhankelijke programmeerinterface om toegang te krijgen tot verschillende bronnen.
De System-klasse behoort tot het 'java.lang' -pakket van Java. Naast het leveren van standaard I / O-streams, biedt System class ook toegang tot omgevingsvariabelen, externe variabelen, laden van bestanden en bibliotheken, en ook een hulpprogramma-methode arrayCopy voor het kopiëren van een deel van een array.
Aangezien deze tutorial alleen is gebaseerd op standaard I / O, slaan we de rest van de faciliteiten die door de System-klasse worden geboden hier over.
Vanuit het oogpunt van input-output biedt de klasse System de volgende streams:
# 1) Standaard invoerstroom (System.in)
De invoerstroom geleverd door de systeemklasse System.in wordt gebruikt om de invoergegevens van een standaard invoerapparaat zoals een toetsenbord te lezen.
De stream blijft open en is klaar om de gegevens te lezen die door de gebruiker aan het standaardinvoerapparaat zijn geleverd.
Het onderstaande voorbeeld demonstreert de functie System.in.read om een enkel geheel getal te lezen.
Uitgang:
# 2) Standaard uitvoerstroom (System.out)
De System.out-interface van de System-klasse wordt gebruikt om de programma-uitvoer naar het standaard uitvoerapparaat zoals de monitor te schrijven. In de meeste gevallen schrijft de System.out-interface de opdrachtuitvoer naar het standaard uitvoerapparaat.
Het gebruikt drie methoden uit de klasse 'PrintStream', aangezien de standaarduitvoer van deze klasse is afgeleid.
Deze methoden zijn:
- afdrukken
- println
- schrijven
De methodes “print” en “println” hebben dezelfde functionaliteit behalve een enkel verschil dat de println methode een newline karakter ( n) aan de output toevoegt.
De schrijfmethode wordt niet vaak gebruikt, behalve in gevallen waarin niet-ASCII-gegevens moeten worden weergegeven.
Het volgende voorbeeld illustreert de System.out-stream.
Uitgang:
Het bovenstaande programma toont de “print” en “println” functies die gebruikt worden met de System.out interface. Hier hebben we variabelen van verschillende gegevenstypen gedefinieerd en elk ervan weergeven met behulp van de System.out-interface.
# 3) Standard Error Stream (System.err)
De standaard foutenstroom, System.err, wordt gebruikt om eventuele fouten weer te geven tijdens de uitvoering van het programma.
Net als de System.out-stream ondersteunt de foutstroom ook de drie methoden van PrintStream-klasse, print, println en schrijft.
Methoden om invoer van de console te lezen
Afgezien van de hierboven beschreven invoerstroom, zijn er nog enkele methoden waarmee we invoergegevens van de console in Java kunnen lezen.
Deze methoden worden hieronder besproken.
# 1) Klasse BufferedReader
De klasse BufferedReader werd voor het eerst geïntroduceerd in JDK 1.0 en is de klassieke methode om invoergegevens van de console te lezen.
De invoerstroom (System.in) is verpakt in de klasse InputStreamReader die op zijn beurt is verpakt in BufferedReader.
Het volgende programma toont het gebruik van de BufferedReader-klasse om invoergegevens van de gebruiker te lezen.
Uitgang:
In het bovenstaande programma hebben we een object van de BufferedReader-klasse gedeclareerd naar System.in stream. Met behulp van dit object lezen we een hele regel invoer.
Zoals u kunt zien, kunt u de volledige gebufferde gegevens lezen, waardoor deze functionaliteit zeer efficiënt is. Het enige nadeel is de cryptische code die misschien elke keer moeilijk te onthouden is.
# 2) Consoleklasse
De klasse “System.console” kan worden gebruikt om invoer van de console te lezen. Dit wordt vooral gebruikt om invoertekens, zoals een wachtwoord, vanaf de opdrachtregel te lezen.
De methode voor het lezen van invoergegevens met behulp van de consoleklasse is momenteel de meest efficiënte en geprefereerde methode in Java.
Het volgende programma demonstreert de klasse System.console.
Uitgang:
Met de klasse System.console kunt u de ingevoerde tekens lezen zonder de tekens te herhalen. Daarom is deze methode nuttiger voor het lezen van wachtwoorden. Ten tweede kunt u ook formaatreeksen gebruiken om de invoergegevens op te maken, vergelijkbaar met degene die worden gebruikt in System.out.printf ().
Hoewel dit de geprefereerde manier is om invoergegevens te lezen, moet u er rekening mee houden dat de klasse System.console niet kan worden gebruikt met een interactieve Java-omgeving zoals IDE's.
# 3) Scanner
Het gebruik van een scannerklasse om invoergegevens te lezen, is waarschijnlijk de snelste en geprefereerde methode. De scanner wordt meestal gebruikt voor het ontleden van de datatypes, inclusief primitieve types en strings. Maar het kan ook worden gebruikt om de invoergegevens te lezen en te analyseren met behulp van tokenized invoer.
De scannerklasse gebruikt hiervoor reguliere expressies.
gratis alternatief voor quickbooks voor kleine bedrijven
Het volgende programma leest de invoergegevens van de gebruiker met behulp van de scannerklasse.
Uitgang:
In het bovenstaande programma hebben we de scannerklasse gebruikt om de string- en integer-gegevens te lezen.
Uitvoer formatteren in Java met printf
We hebben al gezien hoe we de uitvoer in een Java-programma kunnen weergeven. In deze sectie zullen we zien hoe u deze uitvoer kunt formatteren. Hiervoor maken we gebruik van de printf-functie van de “PrintStream” -klasse samen met de “System.out” -stroom van Java.
De printf-functie in Java is vergelijkbaar met de printf-functie in C / C ++. In tegenstelling tot de functies System.out.print en System.out.println die aan één argument werken, heeft System.out.printf meer dan één argument nodig.
Hieronder volgen de variaties van de printf-functie in Java.
Nee | Functie prototype | Omschrijving |
---|---|---|
een | System.out.printf (string); | Drukt een in het argument opgegeven tekenreeks af zonder enige opmaak |
twee | System.out.printf (formaat, argumenten); | Drukt de uitvoer af met de opgegeven opmaakreeks ‘format’ en argumenten. |
3 | System.out.printf (locale, formaat, argumenten); | Drukt de uitvoer af met de opgegeven opmaakreeks door landinstelling en de argumenten toe te passen. |
Merk op dat de functie System.out.format () hetzelfde is als System.out.printf ().
De algemene syntaxis om de opmaakreeks te specificeren is als volgt:
Bijvoorbeeld
Zal de volgende output genereren:
’02 .28 ’
We zullen printf in Java in detail bespreken in de latere onderwerpen van deze tutorial.
Veel Gestelde Vragen
V # 1) Wat zijn standaardinvoer en standaarduitvoer?
Antwoord: Standaard invoer- en uitvoerstromen zijn vooraf verbonden kanalen om te communiceren tussen het computerprogramma en de buitenomgeving wanneer het programma met zijn uitvoering begint. De drie verschillende standaard I / O-streams zijn standaardinvoer (stdin), standaarduitvoer (stdout), standaardfout (stderr).
Q # 2) Wat is standaardinvoer bij programmeren?
Antwoord: Standaardinvoer of stdin is de stroom die wordt gebruikt om invoer van een standaard invoerapparaat zoals een toetsenbord te lezen.
Q # 3) Wat is de input-outputstroom?
Antwoord: Een invoer-uitvoerstroom vertegenwoordigt een bron waarvan u invoer leest en de bestemming waarnaar u uw uitvoer leidt.
Een stream vertegenwoordigt in het algemeen veel apparaten die als bron en bestemmingen worden gebruikt, namelijk toetsenbord, schijfbestand, monitoren, enz.
Q # 4) Wat is standaardinvoer in Java?
Antwoord: De standaardinvoer in Java wordt geleverd door de System-klasse als een System.in-stream. De klasse System is een onderdeel van het pakket java.lang.
Q # 5) Wat is de standaarduitvoer in Java?
Antwoord: De standaarduitvoer in Java wordt geleverd door de klasse System als een System.out-stream. De klasse System is een onderdeel van het pakket java.lang.
Aanvullende voorbeelden - invoer- / uitvoerstreams
Streams vertegenwoordigen de gegevensstroom en die gegevens kunnen in elk formaat zijn (zoals byte, tekst, primitief gegevenstype, enz.). Om gegevens naar een bestemming te schrijven, wordt de uitvoerstroom gebruikt en om de gegevens te lezen wordt de invoerstroom gebruikt.
Verschillende formaten voor lezen en schrijven
Invoer / uitvoer kan worden gelezen / geschreven in de volgende verschillende formaten:
# 1) Bestand lezen als bytestream
Hier worden de gegevens in byte-indeling gelezen. FileInputStream ” en ' FileOutputStream “Klassen worden gebruikt om de inhoud als byte te lezen. Op deze manier stuurt de compiler voor elke byte een verzoek naar het besturingssysteem.
# 2) Bestand lezen als tekenstroom
Op deze manier wordt de invoerstroom in tekenformaat gelezen. Dus voor elk karakter stuurt de compiler een verzoek naar het besturingssysteem. FileReader ' en ' FileWriter ' klassen zijn handig om de inhoud als het personage te lezen.
# 3) Het bufferen van de invoer- / uitvoerstroom
Wanneer u de FileInputStream- of FileReader-klassen gebruikt, wordt voor elke lees- of schrijfbewerking een nieuw verzoek naar het besturingssysteem gestuurd. Dit kan dus leiden tot prestatieproblemen. Om deze BufferedInputStream of BufferedReader te vermijden, worden klassen gebruikt om niet-gebufferde klassen in te pakken.
Dit leest de invoerstroom wanneer de buffer leeg is.
Op dezelfde manier worden FileOutputStream of FileWriter klassen ingepakt met BufferedOutputStream of BufferedWriter om de uitvoer te schrijven zodra de buffer vol is.
# 4) Lezen als datastroom
Bij deze methode, de DataInputStream of DataOutputStream, worden klassen gebruikt om de inhoud te lezen en te schrijven als primitieve gegevenstypen zoals boolean, char, byte, short, int, long, float, double en String. Meestal worden DataInputStream en DataOutputStream samen gebruikt.
# 5) Lezen als objectstroom
ObjectInputStream / ObjectOutputStream, klassen zijn handig om objecten in een bestand te schrijven en de objecten uit het bestand te lezen. Om het object in een bestand op te slaan, moet de klasse de interface voor serialiseren implementeren.
We gaan een object maken voor deze 'ObjectStreamDemo' -klasse en we zullen dat object naar een bestand schrijven en hetzelfde object uit dat bestand lezen.
Bestands-I / O-bewerkingen
De bestandsklasse is handig voor het uitvoeren van bestandsbewerkingen.
Enkele van de bestandsbewerkingen die worden uitgevoerd met de klasse File zijn:
- Maak een bestand
- Controleer of het bestand bestaat
- Haal het pad van het bestand op
- Schrijf het bestand
- Lees het bestand
- Verwijder een bestand en hernoem het bestand
- Controleer de bestandsrechten en wijzig de bestandsrechten
- Verplaats het bestand van de ene map naar een andere locatie
Demoprogramma om het bestand te maken, lezen en schrijven:
Belangrijkste punten om op te merken:
- Een stream is een logische weergave van de datastroom.
- U kunt gegevens in een ander formaat lezen / schrijven, zoals byte, teken, object, primitief gegevenstype.
- De bestandsklasse wordt gebruikt om een bestand te maken, het bestand te verwijderen en het bestand te verplaatsen, kopiëren of hernoemen.
- BufferedInputStream of BufferedOutputStream wordt gebruikt om de prestaties te verbeteren door de gegevens te bufferen.
Gevolgtrekking
Java heeft een java.lang-pakket dat de standaard invoer- en uitvoerfaciliteiten biedt met behulp van de klasse System.
Afgezien van de streams, System.in en System.out die worden gebruikt voor respectievelijk standaardinvoer en -uitvoer, zijn er ook andere methoden zoals BufferedReader, consoleklasse en scannerklasse die wordt gebruikt om invoer van de gebruiker te lezen.
System.out stream gebruikt “PrintStream” class functie, print en println om de output weer te geven. Dit zijn de functies die worden gebruikt om de uitvoer zonder opmaak weer te geven. Een andere functie 'printf' die vergelijkbaar is met de functie printf in C / C ++ wordt ook in Java gebruikt voor opgemaakte uitvoer.
We zullen meer onderzoeken over de scannerklasse en printf-functie in Java in onze aanstaande tutorials.
Bezoek hier voor de exclusieve Java Training Tutorial Series.
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Basis invoer- / uitvoerbewerkingen in C ++
- Bestandsinvoer-uitvoerbewerkingen in C ++
- Zelfstudie voor Java Collections Framework (JCF)
- Java-implementatie: creatie en uitvoering van Java JAR-bestand
- Java Virtual Machine: hoe JVM helpt bij het uitvoeren van Java-applicaties
- Invoer-uitvoer en bestanden in Python (Python openen, lezen en schrijven naar bestand)
- Toegang tot modificatoren in Java - Tutorial met voorbeelden
- Zelfstudie over reflectie in Java met voorbeelden