我在CLI程序中使用Scala JLine。它工作正常,但每次重新启动程序时都会忘记我的历史记录。我看到一个名为FileHistory
的类,我看到ConsoleReader
类有一个名为setHistory()
的方法,它采用FileHistory
的实例。我希望调用该方法会导致它创建或加载并保存包含我的历史记录的文件。但事实并非如此。
不幸的是,文档几乎不存在。如何在下次运行启用JLine的程序时记住我在上一次运行中键入的命令?
以下由mirandes给出的正确答案。感谢mirandes和som-snytt,感谢他们提供了有用的(有帮助的)反应。
答案 0 :(得分:5)
这对我有用:
import scala.tools.jline.console.ConsoleReader
import scala.tools.jline.console.history.FileHistory
import java.io.File
val reader : ConsoleReader = new ConsoleReader()
val history = new FileHistory(new File(".history"))
reader.setHistory(history)
在退出应用程序之前,请确保刷新历史记录。
reader.getHistory.asInstanceOf[FileHistory].flush()
答案 1 :(得分:1)
有评论。我以为你说没有任何文件?
/**
* {@link History} using a file for persistent backing.
* <p/>
* Implementers should install shutdown hook to call {@link FileHistory#flush}
* to save history to disk.
*
* @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
* @since 2.0
*/
public class FileHistory