IO流(十八)

簡介

  在Scala中,I/O操作是調用java中的I/O類或者通過對java中的I/O類進行相應的封裝來實現的。

trait FileLogger extends Logger{

  val fileName:String
  //PrintWriter使用的是java.io.PrintWriter類
  val fileOutput=new PrintWriter(fileName:String)
  fileOutput.println("#")

  def log(msg:String):Unit={
    fileOutput.print(msg)
    fileOutput.flush()
    }
}

  相比於java語言中的I/O類,scala語言中的I/O相關類非常少,而這其中最常用的只有Source這個類。

寫文件

  Scala進行文件寫操作,直接用的都是java中的I/O類。

import java.io._

object ScalaFileWriter {
  def main(args: Array[String]): Unit = {
    val fileWriter=new FileWriter("file.txt")
    fileWriter.write("scala file writer")
    fileWriter.flush()
    fileWriter.close()
  }
}

讀文件

  scala中讀文件可以直接使用java中的I/O類,也可以用scala中的Source對象,該對象對java中的I/O進行了封裝,使用更簡便更靈活。

//讀取文件並將文件內容格式化輸出
import scala.io._

object ScalaFileReader {
  def main(args: Array[String]): Unit = {
    //讀取文件
    val file=Source.fromFile("D:\\scala\\doc\\api\\package.html")
    //返回Iterator[String]
    val lines=file.getLines()
    //打印內容
    for(i<- lines) println(i)  
    //關閉文件
    file.close();
  }
}

網絡I/O

  scala中的網絡I/O操作可以通過Source對象中的fromURL方法來實現,也可以使用原生的JAVA網絡I/O操作進行。

//網絡I/O讀取百度首頁內容
import java.net.{URL, URLEncoder} 
import scala.io.Source.fromURL

object NetworkIO {
  def main(args: Array[String]): Unit = {
    print(fromURL(new URL("http://www.baidu.com")).mkString)
  }
}

忠於技術,熱愛分享。歡迎關注公衆號:java大數據編程,瞭解更多技術內容。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章