博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2-scala文件操作--自动关闭打开的资源,读取properties文件
阅读量:6616 次
发布时间:2019-06-25

本文共 1734 字,大约阅读时间需要 5 分钟。

hot3.png

简介

使用scala的loan pattern自动关闭打开的资源

读取properties文件

依赖的jar

使用scala_arm库自动关闭资源文件时,需要引入以下依赖:

com.jsuereth
scala-arm_${scala.binary.version}
1.4

示例代码

import java.io.InputStreamimport java.util.Propertiesimport scala.collection.JavaConversions.propertiesAsScalaMapimport resource.managedimport test.Control._object Control {  def using[A <: { def close(): Unit }, B](resource: A)(f: A => B): B =    try {      f(resource)    } finally {      if (resource != null)        resource.close()    }}object FileOperator extends App {  val prop = new Properties()  //读取classpath下的配置文件  //读取properties文件  //使用scala_arm自动关闭打开的文件资源  for (    source <- managed(FileOperator.getClass.getClassLoader.getResourceAsStream("db.properties"))  ) {    printProp(source)  }  //使用using自动关闭打开的文件资源  using(FileOperator.getClass.getClassLoader.getResourceAsStream("db.properties")) { source =>    {      printProp(source)    }  }  //使用绝对路径读取文件  val res = readTextFile("D:/scalawork/scala-learn/src/main/resources/db.properties")  res match {    case Some(lines) => lines.foreach(println)    case None        => println("couldn't read file")  }  //处理异常,返回Option  def readTextFile(filename: String): Option[List[String]] = {    try {      val lines = using(io.Source.fromFile(filename)) { source =>        (for (line <- source.getLines) yield line).toList      }      Some(lines)    } catch {      case e: Exception => None    }  }  //加载properties并转换为HashMap,读取其内容  def printProp(source: InputStream) = {    prop.load(source)    println(prop.getProperty("jdbc.idleMaxAge"))    prop.foreach(ele => {      println(s"${ele._1} => ${ele._2}")    })  }}

转载于:https://my.oschina.net/cloudcoder/blog/491163

你可能感兴趣的文章
smartd守护进程
查看>>
最新ensp1.3 380,NE40E NE5KE NE9KE CX CE12800都可以用
查看>>
什么是DAS、NAS、SAN、IP-SAN,它们之间有什么区别?
查看>>
我的友情链接
查看>>
同余方程
查看>>
P3144 [USACO16OPEN]关闭农场Closing the Farm
查看>>
学习SQL的九个理由
查看>>
AS学习笔记一
查看>>
移位运算
查看>>
过滤器案例,把所有的页面编码格式设为GBK
查看>>
网站性能提高之国外空间
查看>>
http get 方式参数的长度限制
查看>>
[应用模板]HTML5+Phonegap通讯录
查看>>
大小端模式
查看>>
HTML那些事
查看>>
cocos2d移植到安卓引入第三方so文件时候编译会删除解决方案
查看>>
iBatis批处理(batch)
查看>>
分布式计算开源框架Hadoop入门实践(三)
查看>>
JSTL显示序号
查看>>
Python 面向对象高级编程——使用枚举和元类
查看>>