java:console_read

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Διαβάζοντας από την κονσόλα ====== Προκειμένου να διαβάσετε από την κονσόλα έχετε δύο επιλογές - να διαβάσετε με χρήση του standard stream **System.in**. Τα standard streams ορίζονται από το λειτουργικό σύστημα και είναι τα εξής: **System.in**, **System.err**, **System.out** (σε αναλογία με τα STDIN, STDERR, STDOUT στη γλώσσα **C**). - Με χρήση της κλάσης **[[http://docs.oracle.com/javase/7/docs/api/java/io/Console.html|java.io.Console]]**. ===== Διαβάζοντας από το System.in ===== To **System.in** είναι ένα stream τύπου byte-stream. Συνήθως από την κονσόλα θέλουμε να διαβάσουμε χαρακτήρες. Στις περιπτώσεις αυτές απαιτείται να το μετατρέψουμε σε character stream ως εξής: <code java> InputStreamReader cin = new InputStreamReader(System.in); </code> Τον παραπάνω κώδικα συνήθως τον εντάσσουμε μέσα σε ένα block try/catch, όπως παρακάτω <code java> try (InputStreamReader r = new InputStreamReader(System.in)) { char []buf = new char[128]; String word = null; int len = 0; System.out.print("Enter your input: "); if((len = r.read(buf,0,128)) != -1) { word = new String(buf); word = word.substring(0, len-1); System.out.println("Your input is: "+word); } else { System.out.println("No input!"); } } catch (IOException ex) { System.out.println("Unable to read from STDIN"); System.exit(1); } </code> Για την διευκόλυνση σας, κατά την ανάγνωση μπορείτε να δημιουργήσετε ένα αντικείμενο της κλάσης java.io.BufferedReader, όπως παρακάτω. Το πλεονέκτημα της συγκεκριμένης επιλογής είναι ότι η κλάση BufferedReader σας δίνει την δυνατότητα να διαβάσετε απευθείας μία γραμμή από το stream μέσω της μεθόδου readLine, την οποία επιστρέφει ως String. <code java> try (BufferedReader r = new BufferedReader(new InputStreamReader(System.in)) ) { String word = null; System.out.print("Enter your input: "); if( (word=r.readLine()) != null) { System.out.println("Your input is: "+word); } else { System.out.println("No input!"); } }catch (IOException ex) { System.out.println("Unable to read from STDIN"); System.exit(1); } </code> <WRAP info 80% center round> Σε όλες τις περιπτώσεις που ανοίγετε ένα stream υποχρεούστε να ελέγχετε για πιθανή δημιουργία IOException κατά το άνοιγμα του stream. Ο compiler της Java θα εμφανίσει λάθος σε περίπτωση που δεν το κάνετε. </WRAP> ===== Διαβάζοντας με χρήση της κλάσης Console ===== Μπορείτε να διαβάσετε ή να γράψετε

java/console_read.1434767514.txt.gz · Last modified: 2016/02/26 11:15 (external edit)