• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Scala的文件读写操作与正则表达式

    目录

    在本篇文章中你将会学习并了解常用的文件处理任务,例如读取文件的一行文本,本博客的要点包含:

    1.Source.fromFile(...).getLines.toArray 输出文件所有行
    2.Source.fromFile(...).mkString 以字符串形式输出文件内容
    3.将字符串转换为数字,可以使用toInt或toDouble方法
    4.使用java的PrintWriter写入文本文件
    5.“正则”.r是一个Regex对象
    6.若你的正则表达式包含反斜杠或者引号,请用"""..."""
    7.正则模式包含分组,可以使用for(regex(变量1...,变量2)- 字符串)

    本篇文章要点如下:

    读取行

    // 读取文件所有的行,可以调用scala.io.Source对象的getLines方法:
    val source = Source.fromFile("a.txt","utf-8")
    val lineIterator = source.getLines

    结果是迭代器可以使用for循环处理这些行

    for(i - lineIterator) println(i)

    也可以使用迭代器应用toArray或toBuffer方法,将这些行放到数组力或者数组缓冲行中,若想将读取的的文件作为一个字符串,只需val conents = source.mkString

    下面是简单的代码实例:读取桌面上的a.txt

    object ReadFile {
     def main(args: Array[String]): Unit = {
     val read = new ReadFile()
     val resource: String = "C:\\Users\\DonnieGao\\Desktop\\a.txt"
     val encode = "UTF-8"
     read.readFile(resource, encode)
     println(read.readFileToStr(resource, encode))
     }
    }
    
    class ReadFile {
     /**
     * 一行行读取文件的内容
     *
     * @param resource 文件路径
     * @param code  文件编码格式
     */
     def readFile(resource: String, code: String): Unit = {
     var source: BufferedSource = null
     try {
      // 获取文件的Source对象,第一个参数是文件的路径,第二个文件的编码格式
      source = Source.fromFile(resource, code)
      val lineIterator = source.getLines()
      while (true) {
      if (lineIterator.hasNext) {
       println(lineIterator.next())
      } else {
       return
      }
      }
     } finally {
      // 释放资源
      source.close()
     }
     }
    
     /**
     * 将文本文件所有内容作为字符串
     *
     * @param resource 文件路径
     * @param code  文件编码格式
     * @return
     */
     def readFileToStr(resource: String, code: String): String = {
     // 获取文件的Source对象,第一个参数是文件的路径,第二个文件的编码格式
     var source: BufferedSource = null
     try {
      source = Source.fromFile(resource, code)
      source.mkString
     } finally {
      source.close()
     }
     }
    }

    读取字符

    要将文件中读取单个字符,可以把Source对象当作迭代器,若仅仅只是想查看字符可以调用Source对象的buffered方法。

    读取词法单元和数字

    读取源文件中所有空格隔开的词法单元

    val tokens = source.mkString.split("\\s+")

    若有个基本都是浮点型的文件,可以将其读取到数组中:

    val numbers = for (w - tokens) yield w.toDouble 或者也可 
    val numbers = token.map(_.toDouble)

    读取二进制文件

    Scala并没有提供读取二进制文件的方法,可以使用java读取二进制的方法,代码示例

    val file = new File(fileName)
    val in = new FileInputStream(file)
    val bytes = new Array[Byte](file.length.toInt)
    in.read(bytes)
    in.close()

    写入文本文件

    Scala没有内建对写入文件的支持,可借助java进行文件写入操作例如使用java.io.PrintWriter

     /**
     * Scala写入文借助java的PrintWriter
     */
     def write(): Unit = {
     val out = new PrintWriter("C:\\Users\\DonnieGao\\Desktop\\test.txt")
     for (i - 0 to 100) out.println(i)
     out.close()
     }

    访问文件目录

    Scala中没有直接访问某个目录下的所有文件的方式或者递归遍历有目录的类

     /**
     * 使用java列举下所有的文件夹
     * @param dir 文件目录路径
     */
     def dir(dir:String) = {
     val dirFile = new File(dir)
     val arrayFile= dirFile.listFiles()
     for (i - arrayFile){println(arrayFile.toBuffer)}
     }

    序列化

    在java中声明一个可以被序列号的类通常是下面这种:

    public class Person implements java.io.Serializable {
     private static final long serialVersionUID = 4436475322569107137L;
    }

    Scala中声明一个可以被序列化的类通常是下面这种:

    @SerialVersionUID(12356L) class ReadFile extends Serializable {
     
    }

    正则表达式

    Scala中提供了正则操作处理scala.util.matching.Regex让这件事情可以变得简单。构造一个Regex对象,用String类的r方法即可

    object RegexDemo {
     def main(args: Array[String]): Unit = {
     // 初始化正则对象
     val numPattern = "[0-9]+".r
     val regex = "13 welcome to beijing"
     // findAllIn方法返回遍历所有匹配的迭代器,可以在for循环中使用
     for (matchString - numPattern.findAllIn(regex)) {
      println(matchString)
     }
     // 查询字符串首个匹配项
     println(numPattern.findFirstIn(regex))
     // 检查某个字符串的开始部分能匹配,可以使用findPrefixOf
     println(numPattern.findPrefixOf(regex))
     }

    总结

    以上所述是小编给大家介绍的Scala的文件读写操作与正则表达式 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • 浅谈Scala的Class、Object和Apply()方法
    • PHP警告Cannot use a scalar value as an array的解决方法
    • php下关于Cannot use a scalar value as an array的解决办法
    • ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别
    上一篇:只能输入正整数的正则表达式及常用的正则表达式
    下一篇:正则表达式实现字符串每4位后自动加空格效果(两种方法)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Scala的文件读写操作与正则表达式 Scala,的,文件,读写,操作,