User Tools

Site Tools


java:console_read

This is an old revision of the document!


Διαβάζοντας από την κονσόλα

Προκειμένου να διαβάσετε από την κονσόλα έχετε δύο επιλογές

  1. να διαβάσετε με χρήση του standard stream System.in. Τα standard streams ορίζονται από το λειτουργικό σύστημα και είναι τα εξής: System.in, System.err, System.out (σε αναλογία με τα STDIN, STDERR, STDOUT στη γλώσσα C).
  2. Με χρήση της κλάσης java.io.Console.

Διαβάζοντας από το System.in

To System.in είναι ένα stream τύπου byte-stream. Συνήθως από την κονσόλα θέλουμε να διαβάσουμε χαρακτήρες. Στις περιπτώσεις αυτές απαιτείται να το μετατρέψουμε σε character stream ως εξής:

InputStreamReader cin = new InputStreamReader(System.in);

Τον παραπάνω κώδικα συνήθως τον εντάσσουμε μέσα σε ένα block try/catch, όπως παρακάτω

  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);
  }      

Για την διευκόλυνση σας, κατά την ανάγνωση μπορείτε να δημιουργήσετε ένα αντικείμενο της κλάσης java.io.BufferedReader, όπως παρακάτω. Το πλεονέκτημα της συγκεκριμένης επιλογής είναι ότι η κλάση BufferedReader σας δίνει την δυνατότητα να διαβάσετε απευθείας μία γραμμή από το stream μέσω της μεθόδου readLine, την οποία επιστρέφει ως String.

  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);
  }      

Σε όλες τις περιπτώσεις που ανοίγετε ένα stream υποχρεούστε να ελέγχετε για πιθανή δημιουργία IOException κατά το άνοιγμα του stream. Ο compiler της Java θα εμφανίσει λάθος σε περίπτωση που δεν το κάνετε.

Διαβάζοντας με χρήση της κλάσης Console

Μπορείτε να διαβάσετε ή να γράψετε

java/console_read.1434767514.txt.gz · Last modified: 2015/06/20 01:31 (external edit)