如何在Java中输入超过4095个字符的行?

How to input a line longer than 4095 characters in Java?

我不知道为什么无论我输入的行有多长,l String 的长度都不超过 4095。我真的不知道错误在哪里。我认为这是一个最终规则之类的,但我如何在 Java 中绕过它?如您所见,我使用了 BufferedReader 及其 readLine() 方法,我需要读取大量行。 运行 已经没有选项了。

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Krazki {
    public static int solve() {
        try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String l = br.readLine();
        int n = Integer.parseInt(l.split("\s")[0]);
        int m =  Integer.parseInt(l.split("\s")[1]);
        if(n < m) {
            return 0;
        }
        int[] width = new int[n + 2];
        width[0] = Integer.MAX_VALUE;
        l = br.readLine();
        String[] line = l.split("\s", n);
        for(int i = 1; i <= n;i++){
            width[i] = Math.min(width[i-1], Integer.parseInt(line[i-1]));
        }
        width[n + 1] = 0;
        int res = n + 1;
        line = br.readLine().split("\s");
        for(int i = 0; i < m; i++){
            if(res > 0) {
                res--;
            }
            while(width[res] < Integer.parseInt(line[i])) {
                res--;
            }
        }
        br.close();
        return res;
        }
        catch(Exception e) {
            e.printStackTrace();
            return -1;
        }
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}

(实际上1)您可以在Java中输入的行的长度没有限制。

如果您看到 4096 个字符的行长度限制,可能 是由您用来输入数据的命令 shell 或控制台应用程序强加的.这不是一个可以在 Java 应用程序中直接解决的问题。

行长度限制通常 OS 特定,需要通过 OS 特定方式解决。

但是,更实用的方法是将您的应用程序更改为:

  • 从不应有任何行长度限制的文件中获取输入,或者
  • 实施续行语法,允许用户将过长的行作为多行输入。

1 - 应用程序可能无法处理超过 ~231 个字符的行,因为 StringStringBuffer 使用数组和数组仅限于那么多元素。此外,应用程序通常需要足够的内存来保存完整的行。