尊敬所有的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