尊敬所有的JLine用户,的JLine,如何获得完整的文件名在Windows
我最近开发,我使用的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系统测试,因为正斜杠似乎确定。
任何人都可以帮助我正确的方式获得完整的文件名?非常感谢。
Si。
见https://www.student.cs.uwaterloo.ca/~cs132/Weekly/W03/FilePaths.html这使一个重要的注意事项'反斜线 - 就像在一个文件路径使用 - 不能直接在Java String中使用。 Java使用反斜杠来表示“下一个字符意味着特别的东西”。 Java中的反斜杠加倍表示“下一个字符(第二个反斜杠)应该插入到字符串中”.' – ecle 2013-04-25 05:00:29
代码中没有错......只是用户需要输入文件名,其路径为“在Java字符串中测试\\ new \\ test.txt“,而不是让Java正确解释它。我想,这对用户来说很麻烦。如果是这样,您可以在打印出来之前将用户字符串输入中出现的任何“\”替换为“\\”。 – ecle 2013-04-25 05:08:04
你不能直接从Java输入中获得\,因为正如你在前面的评论中提到的那样,\被解释为别的东西,例如, \ n,\ t。 – zyzyis 2013-04-26 08:01:28