Scala IO总结

Scala IO总结

归纳下Scala的io,Scala创建了两个类用于io。

  • Console(用于标准输入输出)
  • StdIn(用于标准输入)
  • Source(用于文件输入,输出得用java的api)
  • 文件输出(Scala中没有专门的文件输出,需要使用Java的类)
  • 相对路径
  • 题外话:怎么在打包后获得jar包里的资源

Console

Console是对System.outSystem.inSystem.err的一层封装。

Scala IO总结_第1张图片

在scala.Predef中有许多方便的调用,所以才可以用print,println等函数

Scala IO总结_第2张图片

object Demo {
  def main(args:Array[String]): Unit ={
    println("Hello World")
  }
}

Console中也有用来从控制台读取的API,不过在Scala2.11后的版本后已废弃,改用StdIn来代替。


StdIn

StdIn是Console类中标准输入的引用

import scala.io.StdIn

object Demo {

  def main(args: Array[String]): Unit = {
    val a = StdIn.readLine("请输入:")
    println("输出为" + a)
  }
}


Source

Source是对java.io.File的一层封装

常用的方法有

  • fromFile
  • fromURI
import scala.io.Source

object Demo {

  def main(args: Array[String]): Unit = {
    println(Source.fromFile("pom.xml").mkString)
  }

}


相对路径

相对路径以jvm环境变量中的user.dir为根目录

在Scala中启动Scala的路径即为user.dir的值。

Scala IO总结_第3张图片

在IDEA中user.dir的值为项目的根目录下面

Scala IO总结_第4张图片


题外话:怎么在打包后获得jar包里的资源

使用类名.class.getClassLoader().getResource()

以log4j为例,获取包中的META-INF/MANIFEST.MF

Scala IO总结_第5张图片

import org.slf4j.Logger;

import java.io.IOException;

public class CUtil{
    public static void main(String[] args) throws IOException {
        System.out.println(Logger.class.getClassLoader().getResource("META-INF/MANIFEST.MF").getFile());
        System.out.println(Logger.class.getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF").read());;
    }
}

Scala IO总结_第6张图片

你可能感兴趣的:(#,Scala)