Есть ли способ автоматизировать пользовательский ввод с помощью LineReader JLine?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ автоматизировать пользовательский ввод с помощью LineReader JLine?

Сообщение Anonymous »

При обработке пользовательского ввода через Scanner(System.in) вы можете использовать System.setIn() для автоматизации пользовательского ввода.
Например:

Код: Выделить всё

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()
}
}
Но при попытке использовать тот же метод для LineReader JLine он не работает:

Код: Выделить всё

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

Я считаю, что это связано с тем, что inputScanner использует System.in (как видно при его создании), а LineReader, похоже, этого не делает.
Мой вопрос: есть ли способ автоматизировать пользовательский ввод и для LineReader?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... linereader
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»