Java是否有用于目录选项卡完成的已知库?
我想在linux/unix环境中创建一个从命令行运行的程序。理想的结果是能够标记完整的目录。是否有任何可用的库来实现这一点 简介:/ho [tab]/home/来自以下位置可能会有所帮助: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开头的文件列表。你会得到剩下的。我认为你不需要一个库来实现这一点,只需自己编写代码即可文件类已包含所需的所有内容,如:
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”)
列表文件时直接筛选出文件,例如
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版本。
最新版本可从以下网址获得:。
它为目录和文件提供内置的完成符。可能有助于创建您自己的解决方案,但我不知道如何直接解决此问题,抱歉。