第15章 文件和正则表达式

15.1 读取行

import scala.io.Sourceobject FileSyllabus {def main(args: Array[String]): Unit = {//文件读取val file1 = Source.fromFile("D:\\Data\\Scala\\随堂笔记\\笔记", "UTF-8")/*方式一:*/
//    val lines = file1.getLines.mkString("\n")
//    println(lines)/*方式二:*/
//    val lines = file1.getLines
//    lines.foreach(println(_))/*方式三:*/val lines = file1.getLinesfor (line <- lines) {println(line)}file1.close}}

尖叫提示:记得close

scala> val file1 = Source.fromFile("D:\\Data\\Scala\\随堂笔记\\笔记", "UTF-8")
file1: scala.io.BufferedSource = non-empty iterator

1) 文件内容转数组:

val array= file1.getLines.toArray

2) 文件内容转字符串:

val iterator = file1.mkString

15.2 读取字符

由于Source.fromFile直接返回的就是Iterator[Char],所以可以直接对其进行迭代,按照字符访问里边每一个元素。

Source.fromFile("C:\\Users\\61661\\Desktop\\scala笔记.txt", "UTF-8")
for(ch <- file2){println(ch)
}
file2.close

15.3 读取词法单元和数字

如果想将以某个字符或某个正则表达式分开的字符成组读取,可以这么做:

val file3 = Source.fromFile("D:\\Data\\Scala\\随堂笔记\\info.csv")
val tokens = file3.mkString.split(",")
println(tokens.mkString(" "))
file3.close

15.4 读取网络资源、文件写入、控制台操作

1) 读取网络资源

val webFile = Source.fromURL("http://www.baidu.com")
webFile.foreach(print)
//等价于:webFile.foreach(print _)
webFile.close()

2) 写入数据到文件

import java.io.{File, PrintWriter}
val writer = new PrintWriter(new File("嘿嘿嘿.txt"))
for (i <- 1 to 100)writer.println(i)
writer.close()

3) 控制台操作

import scala.io.{Source, StdIn}
//控制台交互--老API
print("请输入内容:")
val consoleLine1 = Console.readLine()
println("刚才输入的内容是:" + consoleLine1)
//控制台交互--新API
print("请输入内容(新API):")
val consoleLine2 = StdIn.readLine()
println("刚才输入的内容是:" + consoleLine2)

/*结果:

请输入内容:hello
刚才输入的内容是:hello
请输入内容(新API):hello
刚才输入的内容是:hello

*/

15.5 序列化

@SerialVersionUID(1L) class Person extends Serializable{override def toString = name + "," + ageval name = "Nick"val age = 20}object PersonMain extends App{override def main(args: Array[String]): Unit = {import java.io.{FileOutputStream, FileInputStream, ObjectOutputStream, ObjectInputStream}val nick = new Personval out = new ObjectOutputStream(new FileOutputStream("Nick.obj"))out.writeObject(nick)out.close()val in = new ObjectInputStream(new FileInputStream("Nick.obj"))val saveNick = in.readObject()in.close()println(saveNick)}
}

15.6 进程控制

我们可以使用scala来操作shell,scala提供了scala.sys.process包提供了用于shell程序交互的工具。

1) 执行shell

import sys.process._
"ls -al /"!;
"ls -al /"!!

尖叫提示:! 和 !! 的区别在于:process包中有一个将字符串隐式转换成ProcessBuild对象的功能,感叹号就是执行这个对象,单感叹号的意思就是程序执行成功返回0,执行失败返回非0,如果双感叹号,则结果以字符串的形式返回。

2) 管道符

import sys.process._
"ls -al /" #| "grep etc" !

3) 将shell的执行结果重定向到文件

import sys.process._
"ls -al /" #| "grep etc" !;
"ls -al /" #>> new File("output.txt") !;

尖叫提示:注意,每一个感叹号后边,有分号结束
scala进程还可以提供:
p #&& q操作,即p任务执行成功后,则执行q任务。
p #|| q操作,即p任务执行不成功,则执行q任务。
既然这么强大,那么crontab + scala + shell,就完全不需要使用oozie了。

15.7 正则表达式

我们可以通过正则表达式匹配一个句子中所有符合匹配的内容,并输出:

    /*正则表达式*/import scala.util.matching.Regex//实例化第一个正则对象val pattern1 = new Regex("(S|s)cala")
//等价于://实例化第二个正则对象val pattern2 = "(S|s)cala".rval str = "Scala is scalable and cool"println(pattern2 findAllIn str) //non-empty iteratorprintln((pattern2 findAllIn str).mkString(",")) //Scala,scala

转载于:https://www.cnblogs.com/LXL616/p/11135933.html

15.Scala- 文件和正则表达式相关推荐

  1. 深圳大数据学习:Scala系列之文件以及正则表达式

    深圳大数据学习:Scala系列之文件以及正则表达式 7.1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Source ob ...

  2. html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile

    我无法将从多个html文件(文本不是英文)获得的正则表达式结果写入.txt文件.它将它们打印成屏幕上新行的几个字符串,但是当我尝试将它写入outfile时,它只会写入一个随机字符串.我的代码看起来像这 ...

  3. idea新建scala文件_IDEA maven项目中新建.scala文件

    本文首发于我的博客[IDEA maven项目中新建.scala文件] 分为三步 第一步.IDEA中安装scala插件 1.搜索安装 File-Sittings-Plugins-搜索安装scala 2. ...

  4. Scala文件内容生成本地文件

    用Scala文件内容的生成本地的一个文件 格式: url time traffic 例如: http://www.baidu.com [2018-12-08 22:00:00] 30 生成一些错乱数据 ...

  5. C语言15大头文件介绍

         C89(标准C)  有15个头文件 ,这些头文件包含了标准库的函数的声明     1. assert.h     /*  assert.h     assert macro     Copy ...

  6. windows文件路径 正则表达式_Windows非常实用的四款软件

    Windows非常实用的四款软件 for挨踢世界 Windows非常实用的四款软件 买一个电脑,进入一个公司,每天学习办公,各种辅助软件少不了!还有就是一些让你提高工作效率的软件,比如: Everyt ...

  7. 15. Scala并发编程模型Akka

    15.1 Akka介绍 1) Akka是Java虚拟机JVM平台上构建高并发.分布式和容错应用的工具包和运行时,可以理解成Akka是编写并发程序的框架 2) Akka用Scala语言写成,同时提供了S ...

  8. Linux命令应用大词典-第 15章 文件、目录权限和属性

    15.1 chmod:更改文件和目录的模式 15.2 chown:更改文件和目录的用户所有者和组群所有者 15.3 chgrp:更改文件或目录的所属组 15.4 umask:显示和设置文件及目录创建默 ...

  9. 批量处理文件,正则表达式处理文件

    最近由于有批量处理文件的需要简单的使用了一下python来对文件进行批量操作 需求:批量修改文件名称   因为有些编号被删除   要重新按顺序编号 因此采取读取目录下的文件名称  然后修改称保存到另外 ...

  10. php 正则匹配 文件,php – 正则表达式匹配.htaccess中的一系列文件类型

    我想这将是一个愚蠢的问题,但我不知道这里发生了什么.我想通过.htaccess文件中的正则表达式匹配一组特定的URI. 我想要以下内容 >所有不包含的文件. >所有以.htm / .htm ...

最新文章

  1. ufs 固态硬盘_NVMe SSD新利器?WTG最高级别评分 阿卡西斯NVMe M.2移动固态硬盘盒评测...
  2. codevs 1047 邮票面值设计
  3. 360导入html没有,IE无法加载到外部CSS样式, 用360浏览器就可以,上CSS引用代码[急]_html/css_WEB-ITnose...
  4. Codeforces Round #580 (Div. 2)
  5. 细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
  6. golang reflect
  7. link2001错误无法解析外部符号metaObject
  8. 表示探索、探究的几个词
  9. Idea在plugin的marketplace中一直查不到东西安装插件
  10. centeros mysql_center os 7 Mysql 安装
  11. 支付宝的授权回调目录只能配置一个域名吗_腾讯QQ授权登录(asp.net + angular)...
  12. CNDS-markdowm使用方法(^ _ ^)
  13. 「数据集」一文道尽人脸数据集
  14. Linux上的视频播放及MPV播放器与SVP4插帧
  15. html发送邮jmail,[分享]一个ASP写的JMAIL邮件发送测试程序,测试空间是否可以发送邮...
  16. 垃圾邮件服务器 查询,邮件服务器ip黑名单查询
  17. 最长上升子序列(O(nlogn))算法并输出最长上升子序列
  18. 窃密软件访问的文件和注册表
  19. Java FX 表格数据赋值
  20. 无锡seo揭秘2017年百度核心算法(内部资源)

热门文章

  1. 2020年了,BAT都组建了哪些科技实验室?
  2. MATLAB 绘制论文图片格式设置万能代码模板
  3. 武汉轻工大学计算机学院宿舍,武汉轻工大学有几个校区及校区地址 哪个校区最好...
  4. 如何通俗地解释什么是网桥?
  5. xp系统共享打印机服务器不可用,那种方式能够解决WinXP访问Win10共享打印机指定网络不可用的问题?...
  6. 用selenium模拟登录豆瓣
  7. PyTorch-05神经网络与全连接(Logistic Regression、交叉熵、交叉熵来优化一个多分类的问题、全连接层(MLP网络层)、激活函数与GPU加速、测试、Visdom可视化)
  8. 老挑毛 U盘 winPe 制作 流程
  9. 大卫艾克~雄狮醒来2:实相的本质(中字)
  10. BIM → CIM,捷码赋能智慧城市多行业应用开发