Чтение большого количества текста из командной строки

Я пытаюсь получить текст, введенный пользователем, но, похоже, существует ограничение на количество символов, которые может ввести пользователь. Я использую BufferedReader читать с System.in и это то, что я имел для моего кода изначально:

    BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter text.");
    while (true){
        System.out.print("Text> ");
        String line = r.readLine();
        if (line == null || line.equalsIgnoreCase("q")) {
            break;
        }
        else {
            System.out.println("Response: " + line);
            System.out.println("Response length: " + line.length());
        }
    }

Вот что я получаю, когда запускаю образец текста:

Text> WASHINGTON — Republicans on Thursday vowed a swift and forceful response to the executive action on immigration that President Obama is to announce in a prime-time address, accusing the president of exceeding the power of his office and promising a legislative fight when they take full control of Congress next year.  Senator Mitch McConnell of Kentucky, who will become majority leader in January, said in a speech on the Senate floor Thursday morning that Mr. Obama would regret choosing to ignore the wishes of the American people.  “If President Obama acts in defiance of the people and imposes his will on the country, Congress will act,” Mr. McConnell said just hours before the president was scheduled to speak to the nation on television. “We’re considering a variety of options. But make no mistake. Make no mistake. When the newly elected representatives of the people take their seats, they will act.”  Mr. McConnell did not say what options Republicans were considering, but the party is sharply di  
Response: WASHINGTON — Republicans on Thursday vowed a swift and forceful response to the executive action on immigration that President Obama is to announce in a prime-time address, accusing the president of exceeding the power of his office and promising a legislative fight when they take full control of Congress next year.  Senator Mitch McConnell of Kentucky, who will become majority leader in January, said in a speech on the Senate floor Thursday morning that Mr. Obama would regret choosing to ignore the wishes of the American people.  “If President Obama acts in defiance of the people and imposes his will on the country, Congress will act,” Mr. McConnell said just hours before the president was scheduled to speak to the nation on television. “We’re considering a variety of options. But make no mistake. Make no mistake. When the newly elected representatives of the people take their seats, they will act.”  Mr. McConnell did not say what options Republicans were considering, but the party is sharply di
Response length: 1011
Text> 

Независимо от того, насколько длинным является текст, он всегда обрезается на 1011-м символе. (Он на самом деле обрезается на 1012-м символе, но мне нужно удалить этот символ, чтобы нажать клавишу ВВОД для вставки новой строки.)

Я думал, что проблема была где-то в BufferedReader's readLine() метод, поэтому я попытался с помощью read() а также read(char[] cbuf, int off, int len) методы также из BufferedReader, но я все еще не мог ввести более 1011 символов. Та же проблема все еще происходит, когда я использую Scanner вместо BufferedReader,

Затем я пришел к выводу, что это как-то связано с моей системой, поэтому я попытался запустить тот же код на другом сервере и обнаружил, что могу ввести до 4049 символов в это время (за исключением символа новой строки в конце).

Кто-нибудь знает, почему это так, и что я могу изменить, чтобы я мог читать больше символов через System.in? Я могу опубликовать больше моего кода, если это необходимо.

0 ответов

Другие вопросы по тегам