4

我在我的 CLI 程序中使用Scala JLine 。它工作正常,但每次我重新启动程序时它都会忘记我的历史记录。我看到一个名为 的类FileHistory,并且我看到ConsoleReader该类有一个名为的方法,该方法setHistory()采用FileHistory. 我希望调用该方法会导致它创建或加载并保存包含我的历史记录的文件。但事实并非如此。

不幸的是,文档几乎不存在。我怎样才能让它在下次运行启用 JLine 的程序时记住我在上次运行中键入的命令?

更新

米兰德斯在下面给出的正确答案。感谢 mirandes 和 som-snytt 的帮助(是的溶剂)响应。

4

2 回答 2

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()
于 2013-07-31T01:09:47.500 回答
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

Scala REPL 内部历史比较。

于 2013-07-31T08:11:35.350 回答