gpt4 book ai didi

java - JLine,如何在 Windows 中获取完整文件名

转载 作者:行者123 更新时间:2023-11-29 09:30:35 26 4
gpt4 key购买 nike

尊敬的所有 JLine 用户,

我最近正在开发一个控制台应用程序,我在其中使用 JLine 来提供命令和文件名补全。

它与 FileNameCompleter 一起工作得很好,但是我无法正确获取完整的文件名。

我的代码如下:

        List<Completer> loadCompleter =
Arrays.asList(
new StringsCompleter(commands),
new FileNameCompleter(),
new NullCompleter()
);
console.addCompleter(new ArgumentCompleter(loadCompleter));

while ((line = console.readLine()) != null) {
line = line.trim();
// here I print out the line in char.
char[] result = line.toCharArray();
for (int i = 0; i < result.length; i ++) {
System.out.println(result[i] + " : " + (int)result[i]);
}
}

在我的代码的最后一部分,我打印出我从控制台得到的行,例如,如果我收到了

myCommand test\new\test.txt

输出是myCommand testnewtest.txt

由于某种原因,反斜杠不见了,我从来没有找到正确的文件路径。当我在类似 Unix 的系统中进行测试时,这不是问题,因为正斜杠似乎没问题。

任何人都可以帮助我以正确的方式获取完整的文件名吗?非常感谢。

硅。

最佳答案

JLine 吃掉反斜杠,因为它们用于转义特殊字符,例如 !。您可以通过将以下内容添加到您的 ConsoleReader 初始化中来禁用特殊字符(以及反斜杠的丢失):

console.setExpandEvents(false);

或者,如果您确实想保留特殊字符,则需要将反斜杠加倍(因此输入 foo\\bar 而不是 foo\bar)。

关于java - JLine,如何在 Windows 中获取完整文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16206239/

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