scalaでファイルからの読みこみ

例1)
基本よみとって出力

import scala.io.Source

object test{

        def main(args: Array[String]){

                var source =Source.fromFile("test.txt","utf-8")
                val lines=source.getLines
                var a1: String ="";
                var k=0;
             
                lines.foreach{println(_);}

       
        }
}

foreachの- にファイルの内容が代入される。
本当はforeach() これに中身をブロック化した
foreach({}) となり、()を省略し
foreach{}となっている。

実行結果

abc
efg
hij
lmk


例2)
rubyの xxx.each{|i| print i} みたいな感じの書き方

import scala.io.Source

object cor_test{

        def main(args: Array[String]){

                var source =Source.fromFile("test.txt","utf-8")
                val lines=source.getLines
                var a1: String ="";
                var k=0;
                lines.foreach{a:String => k=k+1; println("Line "+k+" "+a);}
                source.close();
     
        }
}


実行結果

Line 1 abc
Line 2 efg
Line 3 hij
Line 4 lmk

例3) タブ区切りファイルのよみとり

入力ファイル

abc xxx 111
efg yyy 222
hij zzz 333
lmk qqq 444

プログラム

import scala.io.Source

object test{

        def main(args: Array[String]){

                var source =Source.fromFile("test.txt","utf-8")                val lines=source.getLines
                var a1: String ="";
                var k=0;
                lines.foreach{a:String => k=k+1; println("Line "+k+" "+a.split('\t')(1));}
   
        }
}

出力例

$ scala test.scala
Line 1 xxx
Line 2 yyy
Line 3 zzz
Line 4 qqq


例4) とりあえずファイルの内容リストにつめる

import scala.io.Source

object cor_test{

        def main(args: Array[String]){

              
                var source =Source.fromFile("test.txt","utf-8")
                val lines=source.getLines
                var a1: String ="";
                var k=0;
                var list2=List[String]();

                lines.foreach{a:String => k=k+1; list2=(a.split('\t')(2))::list2;}
                var rev_list2=list2.reverse;

                rev_list2.foreach(println)
                source.close();
  
        }
}

出力例

111
222
333
444