如何从Java控制台应用程序执行“less”执行分页?
发布时间:2020-12-15 02:31:15 所属栏目:Java 来源:网络整理
导读:我需要从我的 Java控制台应用程序执行less命令,使用分页.但是,我发现执行外部命令的唯一方法是Runtime.getRuntime().exec(),它要求我通过流写入/读取输入/输出.所以像cat这样的命令(而且实际上就像cat一样),但我需要分页功能. 在C中,我使用system().在Ruby中
我需要从我的
Java控制台应用程序执行less命令,使用分页.但是,我发现执行外部命令的唯一方法是Runtime.getRuntime().exec(),它要求我通过流写入/读取输入/输出.所以像cat这样的命令(而且实际上就像cat一样),但我需要分页功能.
在C中,我使用system().在Ruby中,Kernel.exec完成了这项工作. 有没有办法在Java中完成这项工作? 解决方法
使用Runtime.exec()执行外部进程时,其标准输入和输出流未连接到运行Java程序的终端.您可以使用shell重定向来连接它,但首先您需要知道要使用的终端.没有办法使用标准API找到终端,但你可能找到一个开源库.
为了看到它可以完成,这个程序打开了很少: public class Test { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec( new String[] {"sh","-c","less Test.java < "+args[0] + " > "+args[0]}); System.out.println("=> "+p.waitFor()); } } 要运行它,您应该使用java Test $(tty). tty程序打印连接到其标准输入的终端的名称. 我不太确定这个解决方案的可移植性;至少它适用于Linux. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |