2012-02-29 13 views

答えて

11

あなたは、コンソールからprogrammaticalyそれを行うことができます。

import java.io.FileOutputStream 
import scala.Console 

Console.setOut(new FileOutputStream("<output file path>")) 

を今からすべてのprintprintlnには

+0

[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

+1

を参照してください完璧ではありませんが、私はこれを受け入れる役に立つ答え。 REPLを終了するまでファイルに何もないことがあることがあります。これを回避するには、 'FileOutputStream'を' val'に格納し、 'close'を呼び出してファイルに内容をフラッシュします。 – Gigatron

4

それはあなたがそのようなことを利用したい正確にどのようにあなたの質問から不明だ。このファイルに向けられます。あなたがしようとしているものの例が役に立ちます。

オブジェクトをStringとしてファイルに書き込む単純な演算子を追加する暗黙の関数です。 (>はすでにScalaで()「未満」を意味しているので、私は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() 
    } 
    } 
} 

あなたはでしょうこのようにそれを使用します。List(1, 2, 3)

+0

これは私がやろうとしていることです。例えば 'calculateSomething(a、b、c)'を呼び出すと 'Int'のリストを返します。理想的には' print'と 'println' 'calculateSomething'内の文をファイルに書き出し、返されたリスト結果をファイルに送ります。 – Gigatron

0

を含む作業ディレクトリ内のファイル、「out.txtを」を生成

scala> List(1,2,3) >> "out.txt" 

は、私には正常に動作するようになります。

[email protected]:~/github/scala (master)$ scala -e "println(2 * 2)" > output 
[email protected]:~/github/scala (master)$ cat output 
4 
+1

ありがとうございますが、それはOSのコマンドラインにあり、実行中のREPLセッションではありません。 – Gigatron

+1

@Gigatron印刷する代わりに文字列を生成するだけで、ファイルに簡単に送信できます。そして、あなたが望むソリューションを実装する方法を尋ねるのではなく、達成しようとしていることを示していれば、私たちはもっと役に立ちそうです。 –

関連する問題