0

我在这段代码中看到了一些非常奇怪的东西。

    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。当我取消注释文件完成行时,相同的文件被报告为不存在。这是怎么回事?

4

1 回答 1

0

读完这一行后,console_reader.println(":"+f+":") 很明显,使用完成符并使用制表符完成,文件名后面会附加一个空格。

我将线路更改为val f=console_reader.readLine("input filename >").stripLineEnd.trim()并修复了问题。

于 2016-06-07T06:11:32.643 回答