Java PrintStream (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για την κλάση Java PrintStream και τις μεθόδους εκτύπωσης () και εκτύπωσης () με τη βοήθεια παραδειγμάτων.

Η PrintStreamκλάση του java.ioπακέτου μπορεί να χρησιμοποιηθεί για την εγγραφή δεδομένων εξόδου σε ευανάγνωστη μορφή (κείμενο) αντί για byte.

Επεκτείνει την αφηρημένη τάξη OutputStream.

Εργασία του PrintStream

Σε αντίθεση με άλλες ροές εξόδου, PrintStreamμετατρέπει τα πρωτόγονα δεδομένα (ακέραιος, χαρακτήρας) σε μορφή κειμένου αντί για byte. Στη συνέχεια γράφει αυτά τα μορφοποιημένα δεδομένα στη ροή εξόδου.

Και επίσης, η PrintStreamτάξη δεν ρίχνει καμία εξαίρεση εισόδου / εξόδου. Αντ 'αυτού, πρέπει να χρησιμοποιήσουμε τη checkError()μέθοδο για να βρούμε οποιοδήποτε σφάλμα σε αυτήν.

Σημείωση : Η PrintStreamτάξη διαθέτει επίσης δυνατότητα αυτόματης έκπλυσης. Αυτό σημαίνει ότι αναγκάζει τη ροή εξόδου να γράψει όλα τα δεδομένα στον προορισμό υπό μία από τις ακόλουθες συνθήκες:

  • εάν ο χαρακτήρας νέας γραμμής είναι γραμμένος στη ροή εκτύπωσης
  • εάν println()καλείται η μέθοδος
  • εάν ένας πίνακας byte γράφεται στη ροή εκτύπωσης

Δημιουργήστε μια PrintStream

Για να δημιουργήσουμε ένα PrintStream, πρέπει java.io.PrintStreamπρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο εδώ είναι πώς μπορούμε να δημιουργήσουμε τη ροή εκτύπωσης.

1. Χρήση άλλων ροών εξόδου

 // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String file); // Creates a PrintStream PrintStream output = new PrintStream(file, autoFlush); 

Εδώ,

  • έχουμε δημιουργήσει μια ροή εκτύπωσης που θα γράφει μορφοποιημένα δεδομένα στο αρχείο που αντιπροσωπεύεται από FileOutputStream
  • Το autoFlush είναι μια προαιρετική boolean παράμετρος που καθορίζει εάν θα εκτελείται αυτόματη έξαψη ή όχι

2. Χρήση ονόματος αρχείου

  // Creates a PrintStream PrintStream output = new PrintStream(String file, boolean autoFlush); 

Εδώ,

  • έχουμε δημιουργήσει μια ροή εκτύπωσης που θα γράφει μορφοποιημένα δεδομένα στο καθορισμένο αρχείο
  • Το autoFlush είναι μια προαιρετική boolean παράμετρος που καθορίζει εάν θα εκτελέσει αυτόματο flush ή όχι

Σημείωση : Και στις δύο περιπτώσεις, τα PrintStreamδεδομένα εγγραφής στο αρχείο χρησιμοποιούν κάποια προεπιλεγμένη κωδικοποίηση χαρακτήρων. Ωστόσο, μπορούμε επίσης να καθορίσουμε την κωδικοποίηση χαρακτήρων ( UTF8 ή UTF16 ).

 // Creates a PrintStream using some character encoding PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs); 

Εδώ, χρησιμοποιήσαμε την Charsetκλάση για να καθορίσουμε την κωδικοποίηση χαρακτήρων. Για να μάθετε περισσότερα, επισκεφθείτε το Java Charset (επίσημη τεκμηρίωση Java).

Μέθοδοι PrintStream

Η PrintStreamτάξη παρέχει διάφορες μεθόδους που μας επιτρέπουν να εκτυπώνουμε δεδομένα στην έξοδο.

εκτύπωση () Μέθοδος

  • print() - εκτυπώνει τα καθορισμένα δεδομένα στη ροή εξόδου
  • println() - εκτυπώνει τα δεδομένα στη ροή εξόδου μαζί με έναν νέο χαρακτήρα γραμμής στο τέλος

Παράδειγμα: μέθοδος εκτύπωσης () με κλάση συστήματος

 class Main ( public static void main(String() args) ( String data = "Hello World."; System.out.print(data); ) ) 

Παραγωγή

 Γειά σου Κόσμε. 

Στο παραπάνω παράδειγμα, δεν έχουμε δημιουργήσει μια ροή εκτύπωσης. Ωστόσο, μπορούμε να χρησιμοποιήσουμε τη print()μέθοδο της PrintStreamτάξης.

Ίσως αναρωτιέστε πώς είναι δυνατόν. Λοιπόν, επιτρέψτε μου να εξηγήσω τι συμβαίνει εδώ.

Παρατηρήστε τη γραμμή,

 System.out.print(data); 

Εδώ,

  • System είναι μια τελική κατηγορία που είναι υπεύθυνη για την εκτέλεση τυπικής λειτουργίας εισόδου / εξόδου
  • outείναι μια μεταβλητή κλάσης του PrintStreamτύπου που δηλώνεται στην Systemκλάση

Τώρα δεδομένου ότι outείναι PrintStreamτύπου, μπορούμε να το χρησιμοποιήσουμε για να καλέσουμε όλες τις μεθόδους της PrintStreamτάξης.

Παράδειγμα: μέθοδος print () με κλάση PrintStream

 import java.io.PrintStream; class Main ( public static void main(String() args) ( String data = "This is a text inside the file."; try ( PrintStream output = new PrintStream("output.txt"); output.print(data); output.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια ροή εκτύπωσης που ονομάζεται έξοδος. Η ροή εκτύπωσης συνδέεται με το αρχείο output.txt .

 PrintStream output = new PrintStream("output.txt"); 

Για να εκτυπώσετε δεδομένα στο αρχείο, χρησιμοποιήσαμε τη print()μέθοδο.

Εδώ, όταν εκτελούμε το πρόγραμμα, το αρχείο output.txt είναι γεμάτο με το ακόλουθο περιεχόμενο.

 This is a text inside the file. 

printf () Μέθοδος

Η printf()μέθοδος μπορεί να χρησιμοποιηθεί για την εκτύπωση της μορφοποιημένης συμβολοσειράς. Περιλαμβάνει 2 παραμέτρους: μορφοποιημένη συμβολοσειρά και ορίσματα. Για παράδειγμα,

 printf("I am %d years old", 25); 

Εδώ,

  • Είμαι% d χρονών είναι μια μορφοποιημένη συμβολοσειρά
  • Το% d είναι ακέραια δεδομένα στη μορφοποιημένη συμβολοσειρά
  • Το 25 είναι ένα επιχείρημα

Η μορφοποιημένη συμβολοσειρά περιλαμβάνει κείμενο και δεδομένα. Και, τα ορίσματα αντικαθιστούν τα δεδομένα μέσα στη διαμορφωμένη συμβολοσειρά.

Ως εκ τούτου, το % d αντικαθίσταται από το 25 .

Παράδειγμα: μέθοδος printf () χρησιμοποιώντας PrintStream

 import java.io.PrintStream; class Main ( public static void main(String() args) ( try ( PrintStream output = new PrintStream("output.txt"); int age = 25; output.printf("I am %d years old.", age); output.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια ροή εκτύπωσης που ονομάζεται έξοδος. Η ροή εκτύπωσης συνδέεται με το αρχείο output.txt .

 PrintStream output = new PrintStream("output.txt"); 

Για να εκτυπώσετε το μορφοποιημένο κείμενο στο αρχείο, χρησιμοποιήσαμε τη printf()μέθοδο.

Εδώ, όταν εκτελούμε το πρόγραμμα, το αρχείο output.txt είναι γεμάτο με το ακόλουθο περιεχόμενο.

 I am 25 years old. 

Άλλες μέθοδοι PrintStream

Μέθοδοι Περιγραφές
close() κλείνει τη ροή εκτύπωσης
checkError() ελέγχει εάν υπάρχει σφάλμα στη ροή και επιστρέφει ένα δυαδικό αποτέλεσμα
append() προσαρτά τα καθορισμένα δεδομένα στη ροή

Για να μάθετε περισσότερα, επισκεφθείτε το Java PrintStream (επίσημη τεκμηρίωση Java).

ενδιαφέροντα άρθρα...