Java Konsole über Buffered Reader Zeilenweise auslesen ?

Master3000

Mitglied
Hallo,
ich möchte Daten über Sockets verschicken und empfangen welche dann in der Konsole angezeigt werden und dann von einem BufferedReader zeilenweise ausgelesen werden.
Die Sockets funktionieren, der BufferedReader für die Konsole nicht.

BufferedReader:
        BufferedReader file = new BufferedReader(new FileReader(System.in));
        StringBuffer inputBuffer = new StringBuffer();

    
        while ((line = file.readLine()) != null) {
            
        }

Danke für alle Lösungsansätze und Hilfe
 

kneitzel

Top Contributor
new FileReader(System.in)
macht so doch gar keinen Sinn. Hast Du Dir einmal die Dokumentation von System und von FileReader angesehen?

System.in ist ja auch keine Datei, daher macht ein Reader, der Dateien einlesen soll, auch gar keinen Sinn.

System.in ist ein InputStream.
Um von einem InputStream ein Reader zu bekommen, gibt es die Klasse InputStreamReader.
So könntest Du dann den BufferedReader auf System.in bekommen.
 

Master3000

Mitglied
new FileReader(System.in)
macht so doch gar keinen Sinn. Hast Du Dir einmal die Dokumentation von System und von FileReader angesehen?

System.in ist ja auch keine Datei, daher macht ein Reader, der Dateien einlesen soll, auch gar keinen Sinn.

System.in ist ein InputStream.
Um von einem InputStream ein Reader zu bekommen, gibt es die Klasse InputStreamReader.
So könntest Du dann den BufferedReader auf System.in bekommen.
Was ist der beste die Konsole auszulesen ?
 

kneitzel

Top Contributor
Das mit dem BufferedReader kannst Du prinzipiell so machen. Du musst halt nur den FileReader durch einen InputStreamReader ersetzen.

Du kannst aber auch andere Wege nutzen - Scanner wäre z.B. noch eine Möglichkeit.
 

temi

Top Contributor
welche dann in der Konsole angezeigt werden und dann von einem BufferedReader zeilenweise ausgelesen werden.
Warum gibst du die (bekannten) Daten in der Konsole aus, um sie anschließend wieder einlesen zu wollen?

Du weißt doch schon, welche Daten auf der Konsole stehen.

Oder habe ich das Problem nicht verstanden?
 

Master3000

Mitglied
Die Daten werden auf einen anderen Computer geschickt auf welchem sie aus der Konsole ausgelesen werden sollen.
Sie sind also unbekannt.
Wie kann man mit einem Scanner Zeilenweise die Konsole einlesen ?

Danke bis jetzt
 

kneitzel

Top Contributor
Was genau bedeutet "aus der Konsole ausgelesen werden sollen"?

Ich bin davon ausgegangen, dass es sich um Eingaben eines Nutzers an der Konsole handelt. Und das kann man sehr gut mit einem BufferedReader machen:
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));

Oder auch gerne mit einem Scanner (Interessant, wenn man nur Token lesen will und nicht ganze Zeilen);
Scanner scanner = new Scanner(System.in);

Wenn dein "aus der Konsole ausgelesen werden sollen" aber irgend was anderes bedeutet (Also z.B. irgendwelche Ausgaben, die gemacht wurden, zu lesen), dann solltest Du einfach das Design komplett überdenken oder einfach einmal genau beschreiben, was Du überhaupt vor hast!
 

Master3000

Mitglied
Wie kann man nun mit einem Scanner zeilenweise die Konsole einlesen ?

Bei einem BufferedReader kann man ja einfach:
BufferedReader Zeilenweise:
        while ((line = file.readLine()) != null) {
            
        }

Womit müsste ich das ersetzen damit das für einen Scanner geht ?
 

Master3000

Mitglied
PC1 verschickt über Socket1 Daten an PC2 welcher diese über Socket 2 Empfängt.
PC2 weiß vorher nicht was verschickt wird.
PC2 bekommt diese und schreibt sie Zeilenweise in die Konsole.
PC2 möchte nun die Daten aus der Konsole Zeilenweise einlesen damit sie getrennt verarbeitet werden können.
 

Oneixee5

Top Contributor
Vermutlich handelt es sich aber gar nicht um die selbe Konsole, in welche auf PC2 geschrieben wird und die in welcher das Java-Programm auf PC2 läuft.
Man müsste also mit pipe arbeiten: externalCommand | myJavaProgram

Java:
public class Main {
  public static void main(String[] args) {
      System.out.println("----- Main started -------");
      try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
          String line = null;
          while (true) {
              if ((line = reader.readLine()) != null) {
                  System.out.println("echo>> " + line);
              } else {
                  // somthing
                  break;
              }
          }
      } catch (Exception e) {
          System.err.println(e);
      }
  }
}
myJavaProgram.bat:
@echo off
java -classpath target\classes example.Main
Code:
dir d:\test | myJavaProgram
----- Main started -------
echo>>  Volume in drive D is Data
echo>>  Volume Serial Number is *********
echo>>
echo>>  Directory of d:\test
echo>>
echo>> ********************    <DIR>          .
echo>> ********************    <DIR>          ..
echo>> ********************             2,508 logging.properties
...

dir steht hier nur beispielhaft für das externalCommand
 

mrBrown

Super-Moderator
Mitarbeiter
PC1 verschickt über Socket1 Daten an PC2 welcher diese über Socket 2 Empfängt.
PC2 weiß vorher nicht was verschickt wird.
PC2 bekommt diese und schreibt sie Zeilenweise in die Konsole.
PC2 möchte nun die Daten aus der Konsole Zeilenweise einlesen damit sie getrennt verarbeitet werden können.
Läuft auf PC1 ein einzelnes Programm,oder laufen auf PC2 zwei getrennte Programme?


Vermutlich handelt es sich aber gar nicht um die selbe Konsole, in welche auf PC2 geschrieben wird und die in welcher das Java-Programm auf PC2 läuft.
Ich würde vermuten, dass auf PC2 nur genau ein Programm läuft, aber ein fundamentales Missverständnis der Grundlagen vorliegt...
 

kneitzel

Top Contributor
Ok, wenn mit "von der Konsole lesen" nun offensichtlich keine User-Eingabe gemeint ist, dann ist erst einmal wichtig: Dies ist so nicht möglich!


Wenn es zwei unterschiedliche Programme sind (Also Programm 1 empfängt Daten und schreibt diese auf die Standardausgabe und Programm 2 soll die Daten verarbeiten), dann kannst Du die Ausgabe von Programm 1 als Eingabe von Programm 2 "pipen". Dazu dient dann das "pipe" Symbol und sieht ungefähr so beim Aufruf auf der Eingabeaufforderung aus:
Programm1 -option1 - option2 -arg xyz | Programm2 -irgendwas -was anderes

Für Programm2 wäre es dann wie eine Nutzereingabe zu handhaben, d.h. es wird einfach von System.in gelesen.

Wenn es nur ein Programm ist, dann ist das Geheimnis einfach, die Daten nicht nur auszugeben sondern für die weitere Verarbeitung auch zu speichern.

Eine weitere Alternative kann bei Zwei Programmen auch sein, dass das Programm2 das Programm1 startet. Dann hat es die Kontrolle und kann da auf die Standard Streams zugreifen und diese auslesen bzw. beschreiben.
 

temi

Top Contributor
Wenn (falls) die Clientanwendung (PC2) von dir selbst geschrieben wurde, was spricht dann dagegen, die empfangenen Daten gar nicht erst auf die Konsole zu schreiben, sondern gleich im Client zu verarbeiten?
 
Zuletzt bearbeitet:

Master3000

Mitglied
Ich habe einen Versuch gemacht.
Was mache ich hier falsch ?

Java:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.*;

class Main {

  static String g;

  public static void main(String[] args) throws IOException {
    System.out.println("Hello world!");


            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        //StringBuffer inputBuffer = new StringBuffer();
    
        String line;
    
        while ((line = reader.readLine()) != null) {
      g = line;
          System.out.println(g);
    }
          System.out.println(g);
  }
}
 

Master3000

Mitglied
Empfangen und auswerten wird im selben Script gemacht.
Auswerten außerhalb der Konsole würde natürlich auch gehen jedoch weiß ich nicht wie ich das ganze Zeilenweise mache.
Ausgewertet werden sollen die Daten nämlich mit:
analyse:
        if (line .contains("was man rausfiltern möchte")){
        h = line   
        }

Danke bis jetzt
 

temi

Top Contributor
So ist es.
Weil ich nicht genau weiß wie ich die Daten sonst Zeilenweise auswerten soll.

Na, dann sind wir ja endlich an einem Punkt angelangt, an dem man vielleicht helfen kann. Das hättest du schon 20 Beiträge früher haben können.

Wie sieht denn der Code aus, mit dem du die Konsolenausgabe machst, bzw. die Daten empfängst?
 

Oneixee5

Top Contributor
Wenn man sich nicht vernünftig ausdrückt, dann kann auch nicht geholfen werden. Ich mache noch einen Versuch. Evtl. kommen die Daten aus einem Socket:
Java:
        final Socket socket = ...
        try(DataInputStream dIn = new DataInputStream(socket.getInputStream())) {
            while(true) {
                final String message = dIn.readUTF();
                try(final BufferedReader reader = new BufferedReader(new StringReader(message))) {
                    String line;
                    while ((line = reader.readLine()) != null) {
                        if (line.indexOf("9") > -1) {
                            System.out.println("Zeile gefiltert!");
                        } else {
                            System.out.println("Zeile OK: " + line);
                        }
                    }
                }
            }
        }
Es geht mir nur ums Prinzip, das ist keine Lösung zum kopieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java-Klasse über Konsole starten Allgemeine Java-Themen 6
S java Programme über Konsole starten Allgemeine Java-Themen 5
M Cmd Konsole als Java Konsole Allgemeine Java-Themen 5
W Java Konsole "aufteilen" Allgemeine Java-Themen 4
T Mit Java auf die Konsole eines Process-Objekts zugreifen Allgemeine Java-Themen 10
R java in der konsole nicht gefunden trotz jre,jdk,home und path Allgemeine Java-Themen 4
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
Z Java Programm - xxxxx auf der Konsole ausgeben Allgemeine Java-Themen 4
S Rückmeldung von Konsole(Batch) an Java Allgemeine Java-Themen 2
zilti Java-Konsole auslesen? Allgemeine Java-Themen 10
M Java Klassen funktioner auf Konsole nicht in Eclipse Allgemeine Java-Themen 4
N Konsole im eigenen Java-Programm Allgemeine Java-Themen 4
L Dos Konsole mit Java auslesen ? Allgemeine Java-Themen 2
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
P JRE migration von Java 8+8 auf Java 8+17 Allgemeine Java-Themen 2
kneitzel Oracle Java Lizenzänderung ab Java 17 Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
IngoF Libraries in Java 11 Allgemeine Java-Themen 2
SaschaMeyer Gilt "_" als Java Keyword? Allgemeine Java-Themen 19
Master3000 Java Port reset (Socket) Allgemeine Java-Themen 6
Z Java Testklassenvariable ändern im Hauptprogramm Allgemeine Java-Themen 5
Master3000 JAVA Filereader Allgemeine Java-Themen 18
N A java Exception has occured Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
1Raini Java Warteschlange Allgemeine Java-Themen 21
Tobero .jar Dateine aus einem Ordner laden (Java 16) Allgemeine Java-Themen 5
Z WebApp mit Java verbinden. Allgemeine Java-Themen 8
Mart Vergleich C# und Java Allgemeine Java-Themen 24
S Bildrechte Java, HTML5 und PDF Symbole Allgemeine Java-Themen 5
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Java öffnet immer im editor Allgemeine Java-Themen 1
Z macOS java konnte nicht entfernt werden xpc verbindungsfehler Allgemeine Java-Themen 4
F Java JDK ohne Oracle Konto Allgemeine Java-Themen 5
B Mit Java Click bei (x,y) machen? Allgemeine Java-Themen 6
S Java-Clicker Allgemeine Java-Themen 6
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
J Gmail Postfach und Java Allgemeine Java-Themen 6
E Java Website Login Allgemeine Java-Themen 2
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
X Java gewerblich nutzen mit externe Bibliothek. Was zu beachten? Allgemeine Java-Themen 18
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
S Flächenermittlung von 3D-Modellen per Java? Allgemeine Java-Themen 8
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
Q Java-Programmieren Allgemeine Java-Themen 1
mrBrown Java 16 ist seit heute verfügbar Allgemeine Java-Themen 12
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
B BOT mit Java [Eclipse] programmieren Allgemeine Java-Themen 7
NicoDeluxe Java Email Templates Allgemeine Java-Themen 2
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
G Übermittlung zusätzlicher ASCII-Zeichen bei Übertragung von Dateiinhalt mit Xmodem - JAVA Allgemeine Java-Themen 9
D Java als anfänger Allgemeine Java-Themen 6
H was ist den dieses zur Kompilierzeit und zur Laufzeit in Java? Allgemeine Java-Themen 3
rtm007 Per Java Im Terminal Befehle eingeben. Allgemeine Java-Themen 4
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
T Best Practice Java und unmodifiable Allgemeine Java-Themen 10
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
Vanessa001 Hausaufgabe in Java Allgemeine Java-Themen 7
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
F Java Console Allgemeine Java-Themen 2
Gaudimagspam Skip Liste erstellen in Java Allgemeine Java-Themen 3
AGW Java zu Kotlin Allgemeine Java-Themen 5
bax7891 Java Damals - Java Heute Allgemeine Java-Themen 6
tm.grp Teilsummenproblem in Java Allgemeine Java-Themen 2
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
H Java SDK unter 32 Bit Allgemeine Java-Themen 5
P Unterschied Java SE und Java EE Allgemeine Java-Themen 2
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
M java.util.prefs.Preferences "not visible" Allgemeine Java-Themen 7
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
J Java Filechooser Speichern Allgemeine Java-Themen 8
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
T Java-Anfänger möchte professionell coden lernen Allgemeine Java-Themen 23
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Java Dom Childelemente von de Childelemente von den Childelement bekommen Allgemeine Java-Themen 1
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
I Java und XML Allgemeine Java-Themen 10
K Java Programmfluss Allgemeine Java-Themen 13

Ähnliche Java Themen


Oben