我正在使用以下代码
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/