【发布时间】:2019-11-30 12:55:14
【问题描述】:
尝试从 InputStream 打印行时,我得到一个 NULL。 行数确实返回一个值,并且我打开的文件确实包含相同数量的行。
reader.readLine() 返回 NULL。
reader.lines().count() 确实返回文件中正确数量的行...
所以这让我相信:
- 命令执行成功。
- 文件已成功打开并读取。
- 正在使用正确的流。即
process.getInputStream()
我正在尝试使用 Java 运行一个 linux 命令,该命令将打开位于服务器上的文件并将其打印出来/记录到我的日志文件中。
我尝试过使用 ProcessBuiler 和 Runtime.getRuntime.exec()。两者都产生相同的结果...reader.readLine() 上的 NULL。
一些帖子建议使用process.getOutputStream。它返回 0 行数和空行。
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("sh", "-c", "cat chris.txt");
processBuilder.directory(new File("/opt/tmp/FOLDER_NAME"));
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
logger.info("######### {}", line);
}
我希望将我的文件内容打印到我的日志文件中。
我在 reader.readLine() 对象上得到一个 NULL。
【问题讨论】:
-
当然:
stringBuilder.append(line).append("\n");因为line被剥夺了任何行分隔符。 -
是的。但首先我需要 reader.readLine() 不返回 null。
标签: java inputstream bufferedreader processbuilder