2016-06-07 3 views
0

나는이 코드에서 매우 기괴한 것을보고있다.스칼라 -JL 파일 완성자가 파일을 찾지 못함 (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()으로 변경하고 해결했습니다.