2016-06-07 56 views
0

我在這段代碼中看到了一些非常奇怪的東西。Scala -jline文件完成程序導致找不到文件(linux)

command match { 
     case "q" | "quit" => done=true 
     case "f" | "file" => 
     { 
//  console_reader.addCompleter(fn_completer) 
      val f:String=console_reader.readLine("input filename >") 
      val filename= 
      if(java.nio.file.Paths.get(f).isAbsolute()) 
       f 
      else 
       System.getProperty("user.dir")+"/"+f 
      val ft=Paths.get(filename).toString() 
      console_reader.println(ft) 
      if(Files.exists(Paths.get(filename))) 
      process_file(filename) 
      else 
      console_reader.println(filename+" does not exist") 
//  console_reader.removeCompleter(fn_completer) 
    } 
    case _ => console_reader.println(command+" not a command") 
} 

當我運行並鍵入build.sbt一切都很好 - 調用process_file。 當我取消註釋文件完成行時,相同的文件被報告爲不存在。這是怎麼回事?

回答

0

閱讀完該行後,放置console_reader.println(":"+f+":") 並且很明顯,使用完成程序並使用製表符完成時,文件名後會附加一個空格。

我把行改爲val f=console_reader.readLine("input filename >").stripLineEnd.trim()那個固定的東西。