15.Scala- 文件和正则表达式
第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- 文件和正则表达式相关推荐
- 深圳大数据学习:Scala系列之文件以及正则表达式
深圳大数据学习:Scala系列之文件以及正则表达式 7.1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Source ob ...
- html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile
我无法将从多个html文件(文本不是英文)获得的正则表达式结果写入.txt文件.它将它们打印成屏幕上新行的几个字符串,但是当我尝试将它写入outfile时,它只会写入一个随机字符串.我的代码看起来像这 ...
- idea新建scala文件_IDEA maven项目中新建.scala文件
本文首发于我的博客[IDEA maven项目中新建.scala文件] 分为三步 第一步.IDEA中安装scala插件 1.搜索安装 File-Sittings-Plugins-搜索安装scala 2. ...
- Scala文件内容生成本地文件
用Scala文件内容的生成本地的一个文件 格式: url time traffic 例如: http://www.baidu.com [2018-12-08 22:00:00] 30 生成一些错乱数据 ...
- C语言15大头文件介绍
C89(标准C) 有15个头文件 ,这些头文件包含了标准库的函数的声明 1. assert.h /* assert.h assert macro Copy ...
- windows文件路径 正则表达式_Windows非常实用的四款软件
Windows非常实用的四款软件 for挨踢世界 Windows非常实用的四款软件 买一个电脑,进入一个公司,每天学习办公,各种辅助软件少不了!还有就是一些让你提高工作效率的软件,比如: Everyt ...
- 15. Scala并发编程模型Akka
15.1 Akka介绍 1) Akka是Java虚拟机JVM平台上构建高并发.分布式和容错应用的工具包和运行时,可以理解成Akka是编写并发程序的框架 2) Akka用Scala语言写成,同时提供了S ...
- Linux命令应用大词典-第 15章 文件、目录权限和属性
15.1 chmod:更改文件和目录的模式 15.2 chown:更改文件和目录的用户所有者和组群所有者 15.3 chgrp:更改文件或目录的所属组 15.4 umask:显示和设置文件及目录创建默 ...
- 批量处理文件,正则表达式处理文件
最近由于有批量处理文件的需要简单的使用了一下python来对文件进行批量操作 需求:批量修改文件名称 因为有些编号被删除 要重新按顺序编号 因此采取读取目录下的文件名称 然后修改称保存到另外 ...
- php 正则匹配 文件,php – 正则表达式匹配.htaccess中的一系列文件类型
我想这将是一个愚蠢的问题,但我不知道这里发生了什么.我想通过.htaccess文件中的正则表达式匹配一组特定的URI. 我想要以下内容 >所有不包含的文件. >所有以.htm / .htm ...
最新文章
- ufs 固态硬盘_NVMe SSD新利器?WTG最高级别评分 阿卡西斯NVMe M.2移动固态硬盘盒评测...
- codevs 1047 邮票面值设计
- 360导入html没有,IE无法加载到外部CSS样式, 用360浏览器就可以,上CSS引用代码[急]_html/css_WEB-ITnose...
- Codeforces Round #580 (Div. 2)
- 细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
- golang reflect
- link2001错误无法解析外部符号metaObject
- 表示探索、探究的几个词
- Idea在plugin的marketplace中一直查不到东西安装插件
- centeros mysql_center os 7 Mysql 安装
- 支付宝的授权回调目录只能配置一个域名吗_腾讯QQ授权登录(asp.net + angular)...
- CNDS-markdowm使用方法(^ _ ^)
- 「数据集」一文道尽人脸数据集
- Linux上的视频播放及MPV播放器与SVP4插帧
- html发送邮jmail,[分享]一个ASP写的JMAIL邮件发送测试程序,测试空间是否可以发送邮...
- 垃圾邮件服务器 查询,邮件服务器ip黑名单查询
- 最长上升子序列(O(nlogn))算法并输出最长上升子序列
- 窃密软件访问的文件和注册表
- Java FX 表格数据赋值
- 无锡seo揭秘2017年百度核心算法(内部资源)
热门文章
- 2020年了,BAT都组建了哪些科技实验室?
- MATLAB 绘制论文图片格式设置万能代码模板
- 武汉轻工大学计算机学院宿舍,武汉轻工大学有几个校区及校区地址 哪个校区最好...
- 如何通俗地解释什么是网桥?
- xp系统共享打印机服务器不可用,那种方式能够解决WinXP访问Win10共享打印机指定网络不可用的问题?...
- 用selenium模拟登录豆瓣
- PyTorch-05神经网络与全连接(Logistic Regression、交叉熵、交叉熵来优化一个多分类的问题、全连接层(MLP网络层)、激活函数与GPU加速、测试、Visdom可视化)
- 老挑毛 U盘 winPe 制作 流程
- 大卫艾克~雄狮醒来2:实相的本质(中字)
- BIM → CIM,捷码赋能智慧城市多行业应用开发