gpt4 book ai didi

java - 如何在 Java 中创建 bash "pipe"命令的模拟

转载 作者:行者123 更新时间:2023-11-30 08:06:35 24 4
gpt4 key购买 nike

我对在 Java 中为我的控制台命令行 (Bash) 应用程序创建通用“管道”方法的想法感到困惑,因此基本上可以执行像“ls -lt | head”这样的命令。

我无法全神贯注地实现让我们说一个采用可变参数方法的静态方法......给定上面的 bash 命令,它应该如下面的代码片段所示。

我的想法是将方法封装在 Command 对象中。

public static void pipe (Command ... commands) {

command1.execute();
command2.execute();
}

如有任何帮助,我们将不胜感激。

最佳答案

假设每个命令接受相同的输入并返回相同的东西。如果不是这种情况,您可以将一个对象作为输入并返回一个对象,每个 Command 都会进行转换。基本实现:

public static <T> T pipe(T input, Command<T>... commands) {

for (Command<T> com : commands) {
input = com.execute(input);
}
return input;
}

public interface Command<T> {
T execute(T input);
}

这也可以扩展为使用一种类型的列表,因此 head 命令将始终存储并返回它获得的第一个输入(或前 10 个)。

反正我不会自己实现。你应该看看 java 8 流。管道/流是一系列聚合操作。

对于你的问题,答案是这样的:

    List<Path> lsFirst = Files.list(Paths.get("/")).limit(10).collect(Collectors.<Path>toList());
System.out.println(lsFirst);

关于java - 如何在 Java 中创建 bash "pipe"命令的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com