java - 当我尝试将 BufferedReader 中的字符串放入字符串数组时出现 NullPointer 异常

标签 java process bufferedreader iptables

我正在使用以下代码

public void getIPTableRules(){
    ProcessBuilder pb = new ProcessBuilder("/sbin/iptables", "-L");
    try {
        Process p = pb.start();
        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
        int lineCount = 0;
        String zeile;
        while ((zeile =  input.readLine()) != null) {
            System.out.println(zeile);
            System.out.println(lineCount);
            line[lineCount] = zeile;
            lineCount++;
        }

        input.close();
    } catch (IOException ex) {
        Logger.getLogger(CheckFirewall.class.getName()).log(Level.SEVERE, null, ex);
    }
}

System.out 的打印正确。 变量行在类中设置如下:

public String line[];

异常发生在以下行:

line[lineCount] = zeile;

所以有人可以告诉我我做错了什么......

最佳答案

很有可能,您的 String[] line数组未像

这样初始化
String[] line = new String[100];

但是,因为你不能确定你的 Process 到底有多少行输出可能事先有;我建议使用 List<String>相反,你会初始化为

List<String> lines = new ArrayList<String>();

并添加您的 Process逐行输出给它作为

while ((zeile =  input.readLine()) != null) {
    System.out.println(zeile);
    System.out.println(lineCount);
    lines.add(zeile); // using List#add()
    lineCount++;
}

关于java - 当我尝试将 BufferedReader 中的字符串放入字符串数组时出现 NullPointer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276622/

相关文章:

java - 将一串数字转换为数组

java - 如何通过Java程序在windows中查看Tomcat服务是否正在运行或停止?

java - 取消BufferedReader的readLine()

java - Eclipse 在 JSP 文件中错误地格式化字符串

JavaFX + SQL : Add 1 new HBox with 3 ComboBoxes for each row of SQL Database

c# - 使用 Process 类的 C# 应用程序中的 ffmpeg - 用户提示未显示在标准错误中

java - 通过 java Processbuilder 提交 mapreduce 作业不会结束

java - 如何将 txt 文件从互联网加载到我的 jsf 应用程序中?

java - 在 while 循环中正确使用 BufferedReader.readLine()

java - Jsoup 错误将 node.element 转换为 element.Element