Process child = rt.exec(command); InputStream error = child.getErrorStream(); 怎么查看error中的错误信息
时间: 2024-03-06 07:51:53
浏览: 47
要查看 `error` 流中的错误信息,可以将其转换为 `BufferedReader` 对象,并逐行读取流中的内容。具体来说,可以按照以下步骤来获取 `error` 流中的错误信息:
1. 将 `error` 流转换为 `BufferedReader` 对象,代码如下:
BufferedReader br = new BufferedReader(new InputStreamReader(child.getErrorStream()));
2. 使用 `br.readLine()` 方法逐行读取 `error` 流中的内容,直到读取到 `null` 为止。代码如下:
String line;
while ((line = br.readLine()) != null) {
System.err.println(line);
在上述代码中,`System.err.println(line)` 语句会将每行错误信息输出到标准错误流中,以便在控制台或日志文件中查看。
需要注意的是,在读取 `error` 流的过程中,如果子进程没有产生错误信息,则 `br.readLine()` 方法会一直阻塞,直到子进程退出为止。因此,在实际使用中,可以将 `error` 流和子进程的输出流一起读取,以避免阻塞。
相关问题
ExcelReader reader = ExcleUtil.getReader(inputStream);
Sorry, as an AI language model, I don't have access to your local files or libraries. Can you please provide more context or code snippet to help me understand the problem better?
Process process = Runtime.getRuntime().exec("net send"+user.getIp()+" "+message);InputStream is = process.getInputStream();is为什么是null
根据 Java API 文档,`Process#getInputStream()` 方法返回的是一个输入流,用于读取进程的标准输出信息。但是如果该进程没有标准输出信息,则该方法会返回 null。
在你的代码中,你使用了 `Runtime#exec()` 方法启动了一个外部进程,并且获取了该进程的输入流。但是如果该进程没有标准输出信息,那么 `Process#getInputStream()` 方法将会返回 null,因此你需要在使用该方法的时候进行 null 值判断,避免出现空指针异常。
另外,你在执行命令时,似乎缺少了一个空格,应该为 `"net send " + user.getIp() + " " + message`。