版权声明:菲立思教育 https://blog.csdn.net/cold_wolfie/article/details/82555664
简介
在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大数据编程,了解更多技术内容。