是否有可能,如果是的話,它是如何做到的?在Windows或Linux命令行上運行的通常的>
和>>
在此上下文中不起作用。Scala交互式解釋器(REPL) - 如何將輸出重定向到文本文件?
回答
你可以做到這一點programmaticaly從控制檯:
import java.io.FileOutputStream
import scala.Console
Console.setOut(new FileOutputStream("<output file path>"))
從現在開始,所有print
和println
將被定向到該文件
這是從你的問題不清楚你到底如何想使用這樣的事情。你想要做的一個例子可能會有所幫助。
這是一個隱式函數,它將添加一個簡單的運算符,將任何對象作爲字符串寫入文件。 (請注意,我用>>
意味着UNIX風格>
因爲>
已經在斯卡拉(「小於」)的意思是,你可以,如果你喜歡與其他一些運營商替換此。)
implicit def anyToFileOutput(self: Any) = new {
import java.io._
def >>(filename: String) {
val f = new BufferedWriter(new FileWriter(filename))
try {
f.write(self.toString)
} finally {
if (f != null)
f.close()
}
}
}
你會使用這樣的:
scala> List(1,2,3) >> "out.txt"
其中包含List(1, 2, 3)
這就是我想要做的 - 例如,如果我調用'calculateSomething(a,b,c)'返回'Int'列表,理想情況下它會指示'print'和'println' 'calculateSomething'內的語句寫入文件,並將返回的列表結果發送到文件。 – Gigatron 2012-02-29 18:05:43
看起來是工作的罰款,以我的工作目錄生成一個文件,「out.txt」:
[email protected]:~/github/scala (master)$ scala -e "println(2 * 2)" > output
[email protected]:~/github/scala (master)$ cat output
4
謝謝,但這是在操作系統的命令行,不在正在運行的REPL會話。 – Gigatron 2012-02-29 18:00:06
@Gigatron只需生成字符串而不是打印,然後很容易發送到文件。然後,如果你展示了你打算完成的任務,而不是詢問如何實現所需的解決方案,那麼我們都可以提供更多幫助。 – 2012-02-29 18:05:00
- 1. 如何在scala交互式解釋器(REPL)中運行外部文件?
- 2. 如何將交互式程序的輸出重定向到文件?
- 3. scala 2.11:如何將控制檯輸出重定向到文件
- 4. Python:將文本解析輸出重定向到CSV文件
- 5. 如何將控制檯輸出重定向到文本文件
- 6. 如何將程序輸出重定向到文本文件
- 7. 如何將nosetests的輸出重定向到文本文件?
- 8. 如何將交互式perl腳本的輸出重定向到文件和控制檯?
- 9. Ruby將輸出重定向到文件
- 10. 將ostream重定向到輸出文件
- 11. 如何將python腳本cmd輸出重定向到文件?
- 12. 如何將gcc編譯器的輸出重定向到文件?
- 13. 將ttisql輸出重定向到文件
- 14. 將execlp輸出重定向到文件
- 15. 將lldb輸出重定向到文件
- 16. 將w輸出重定向到文件
- 17. 如何將Valgrind的輸出重定向到文件?
- 18. 重定向輸出到輸出文件
- 19. 將輸出重定向到MongoDB中的文本文件
- 20. 將標準輸出重定向到屏幕和文本文件
- 21. 從命令行將輸出重定向到C文本文件
- 22. 將第二個exe的輸出重定向到文本文件
- 23. 如何將輸出重定向到Pester xml文件?
- 24. 交互式ActionScript解釋器?
- 25. 將Whatsapp bash腳本的輸出重定向到交互式文件以實現自動化目的
- 26. 如何將Win32 :: Process命令的輸出重定向到文本文件?
- 27. 重定向C文件輸出到一個文本文件
- 28. 如何從文本文件中向交互式bash腳本提供輸入
- 29. Xcode 5,如何將控制檯輸出重定向到文件
- 30. 無法將perl腳本的輸出重定向到文件
由於[SI-4793](https://issues.scala-lang.org/browse/SI-4793),'setOut'在2.9 REPL中不起作用。看到[我的答案](http://stackoverflow.com/questions/7219316/println-vs-system-out-println-in-scala/7219519#7219519) – 4e6 2012-02-29 06:24:25
雖然不完美,我接受這是最有用的答案。我注意到有時文件中沒有任何內容,直到我退出REPL。爲了解決這個問題,需要將'FileOutputStream'存儲到'val'中,然後調用'close'來將內容刷新到文件中。 – Gigatron 2012-03-05 01:43:45