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.

[CODE lang="java" title="BufferedReader"] BufferedReader file = new BufferedReader(new FileReader(System.in));
StringBuffer inputBuffer = new StringBuffer();


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

}[/CODE]

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

kneitzel

Gast
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 ?
 
K

kneitzel

Gast
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
 
K

kneitzel

Gast
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:
[CODE lang="java" title="BufferedReader Zeilenweise"] while ((line = file.readLine()) != null) {

}[/CODE]

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);
      }
  }
}
[CODE title="myJavaProgram.bat"]
@echo off
java -classpath target\classes example.Main
[/CODE]
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...
 
K

kneitzel

Gast
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:
[CODE lang="java" title="analyse"] if (line .contains("was man rausfiltern möchte")){
h = line
}[/CODE]

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
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 2
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
U Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
L XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 4
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 5
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
L Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
thor_norsk Handy - Ortung mit Java Allgemeine Java-Themen 23
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
K 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
M 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
A 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
OnDemand 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

Ähnliche Java Themen


Oben