Gibt es eine Möglichkeit, Benutzereingaben mit dem LineReader von JLine zu automatisieren?Java

Java-Forum
Anonymous
 Gibt es eine Möglichkeit, Benutzereingaben mit dem LineReader von JLine zu automatisieren?

Post by Anonymous »

Beim Verarbeiten von Benutzereingaben über Scanner(System.in) können Sie System.setIn() verwenden, um Benutzereingaben zu automatisieren.
So:

Code: Select all

package edu.ntnu.idi.idat;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Scanner;

public final class TestCode {
private TestCode() { }
/**
* Test code.
* @param args
*/
public static void main(
final String[] args
) {
InputStream input = System.in;
String testInputString = "test" + System.lineSeparator() + "test2";
ByteArrayInputStream testInput
= new ByteArrayInputStream(testInputString.getBytes());

System.setIn(testInput);

Scanner inputScanner = new Scanner(System.in);

System.out.println(inputScanner.nextLine());
System.out.println(inputScanner.nextLine());

inputScanner.close()
}
}
Aber wenn man die gleiche Methode für JLines LineReader ausprobiert, funktioniert es nicht:

Code: Select all

package edu.ntnu.idi.idat;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;

public final class TestCode {
private TestCode() { }
/**
* Test code.
* @param args
* @throws IOException
*/
public static void main(
final String[] args
) throws IOException {
InputStream input = System.in;
String testInputString = "test" + System.lineSeparator() + "test2";
ByteArrayInputStream testInput
= new ByteArrayInputStream(testInputString.getBytes());

System.setIn(testInput);

Terminal terminal = TerminalBuilder.builder().build();
LineReader lineReader = LineReaderBuilder
.builder()
.terminal(terminal)
.build();

System.out.println(lineReader.readLine());
System.out.println(lineReader.readLine());

terminal.close()
}
}

Ich glaube, das liegt daran, dass inputScanner System.in verwendet (wie man beim Erstellen sehen kann), während LineReader dies nicht zu tun scheint.
Meine Frage ist: Gibt es eine Möglichkeit, Benutzereingaben auch für LineReader zu automatisieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post