Java是否有用于目录选项卡完成的已知库?

Java是否有用于目录选项卡完成的已知库?,java,command-line,apache-commons,Java,Command Line,Apache Commons,我想在linux/unix环境中创建一个从命令行运行的程序。理想的结果是能够标记完整的目录。是否有任何可用的库来实现这一点 简介:/ho [tab]/home/来自以下位置可能会有所帮助: File dir = new File("."); String[] files = dir.list(new PrefixFileFilter("ho")); 这将返回当前目录中以ho开头的文件列表。你会得到剩下的。我认为你不需要一个库来实现这一点,只需自己编写代码即可文件类已包含所需的所有内容,如:

我想在linux/unix环境中创建一个从命令行运行的程序。理想的结果是能够标记完整的目录。是否有任何可用的库来实现这一点

简介:/ho [tab]/home/

来自以下位置可能会有所帮助:

File dir = new File(".");
String[] files = dir.list(new PrefixFileFilter("ho"));

这将返回当前目录中以
ho
开头的文件列表。你会得到剩下的。

我认为你不需要一个库来实现这一点,只需自己编写代码即可<代码>文件类已包含所需的所有内容,如:

  • File[]listFiles()
  • boolean isDirectory()
  • boolean isFile()
然后您只需要创建:

  • 选择临时路径,例如
    “/home/Ja”
  • 将其分为最后一个具体部分和要完成的部分,
    /home
    Ja
  • 列出混凝土零件中的文件
    新文件(“/home”)。listFiles()
  • 并为
    partial file.getName().startsWith(“Ja”)
我猜大概会有50-100个LOC,包括所有必要的检查,以避免奇怪的事情

如果您想要一个好的方法,请使用,这样您就能够在调用
列表文件时直接筛选出文件,例如

files = folder.listFiles(new PartialFileFilter("Ja"))

GNU“readline”库存在一个JNI包装器(Bash使用它来完成选项卡);看见Tab completion是一种通用功能,不专门与文件系统绑定—例如,PostgreSQL命令行客户端使用Tab completion来完成表名—因此您可能希望将其与Tomasz Nurkiewicz提到的
PrefixFileFilter
配合使用(或用于生成文件名列表的其他类似方法)

是否有Java库可以创建带有目录制表符完成的命令行应用程序

您可能会感兴趣。Picocli是一个单文件Java库,用于构建几乎没有代码的命令行应用程序;它可以生成ANSI颜色的使用帮助消息,并且自1.0版以来,Picocli在Linux(以及Windows上的Cygwin和babun)上支持

这是如何工作的?bash和zsh Unix shell提供了一种称为“可编程完成”的功能,picocli利用这种功能生成一个自动完成脚本,该脚本根据应用程序中的
@选项和
@命令
注释进行定制

安装此脚本后,用户可以键入TAB键,Unix shell将显示可用子命令和选项的列表。对于与
java.io.File
java.nio.File.Path
字段关联的选项,shell将显示与用户迄今键入的内容相匹配的可用文件和目录

这实际上处理的不仅仅是文件和目录:picocli生成的完成脚本为
java.net.InetAddress
类型的选项显示已知主机(来自用户的
/etc/hosts
文件),并为任何枚举类型的字段(包括自定义枚举)的选项显示
enum

下面的动画演示了什么是可能的


JLine可能不再维护,但仍有相当多的Java项目使用它:

但是,如果您知道要使用Linux/Unix的内容,并且只需要简单的文件/目录名即可完成,那么您可以转移问题,在rlwrap下运行Java应用程序:

$ rlwrap -c java ...

您可以使用最新的JLine版本。
最新版本可从以下网址获得:。 它为目录和文件提供内置的完成符。

可能有助于创建您自己的解决方案,但我不知道如何直接解决此问题,抱歉。