簡介
在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大數據編程,瞭解更多技術內容。