一、读取行

  import scala.io.Source

  val source = Source.fromFile("D:\\documents\\Scala\\MyDemo\\t.txt", "UTF-8")

  val lineIterator = source.getLines() //获取文件行的迭代器
for(l <- lineIterator){
println(l)
} val array = source.getLines().toArray //把行放到Array中
for(l <- array){
println(l)
} val context = source.mkString //把整个文件读取成一个字符串
println(context) source.close()

读取文件这里不能重复读取,只显示一遍文本内容

111111111
22222222222222222
3333333333

二、读取字符

  import scala.io.Source

  val source = Source.fromFile("D:\\documents\\Scala\\MyDemo\\t.txt","UTF-8")

  for(c <- source){  //一个字符一个字符迭代 Source扩展自 Iterator[Char]
print(c)
} val iter = source.buffered //使用bufferd方法,用head获取字符 while(iter.hasNext){
if(iter.head == 'a'){
iter.next()
iter.next()
print(iter.head)
}
else{
iter.next()
}
}

三、读取词法单元和数字

  import scala.io.Source
val source = Source.fromFile("D:\\sxt\\documents\\Scala\\MyDemo\\num.txt", "gbk")
val lines = source.getLines() //以行读取 for(l<- lines){
val tokens = l.split("\\s+") //将每行数据以空格隔开
for(i<- tokens){
print(i+",")
}; println() val numbers = tokens.map(_.toDouble) //将分割的字符串转换成double类型
for(n<- numbers){
print(n+"|")
}; println() val numbers1 = for(n<- tokens) yield n.toDouble //将分割的字符串转换成double类型
for(n <- numbers1){
print(n+"-")
}; println() }

四、从URL或其他源读取

  import scala.io.Source
val source1 = Source.fromURL("http://www.baidu.com","UTF-8")
println(source1)
val source2 = Source.fromString("Hello World")
println(source2.mkString)
val source3 = Source.stdin
println(source3.mkString)

五、读取二进制文件

Scala没有读取二进制文件的方法,需要使用Java类库,

  import java.io.File
val file = new File("D:\\\\sxt\\\\documents\\\\Scala\\\\MyDemo\\\\t.txt")
val in = new FileInputStream(file)
val bytes = new Array[Byte](file.length.toInt) in.read(bytes) for(i <- 0 until bytes.length) print(bytes(i)) in.close()

结果:

文件内容:abcd
输出结果:979899100

六、写入文本文件

  val value = 100
val out = new PrintWriter("t1.txt")
for(i <- 0 to 100) out.println(i)
out.printf("%d ", value.asInstanceOf[AnyRef]) //格式化输出需要转换成 AnyRef
out.print("%d".format(value)) //通过String的format的方法完成格式化输出
out.close()

结果:

在项目工程目录下,生成t1.txt文件

七、访问目录

八、序列化

九、进程控制

十、正则表达式

  val numPattern = "[0-9]+".r  //通过 String的 r方法

  val wsnumwsPattern = """\s+[0-9]+\s+""".r  //"""...""" 原始字符串可包含反斜线或引号,不需要转义 "\\s+[0-9]+\\s+"

  for(matchString <- numPattern.findAllIn("99 apples, 87 bottles")) println(matchString) //findAllIn返回所有匹配项的迭代器

  val matches = numPattern.findAllIn("99 apples, 87 bottles").toArray //转换成数组
for(m<- matches) println(m) val m1: Option[String] = wsnumwsPattern.findFirstIn("99 apples, 87 bottles") //获得第一个匹配项
println(m1) val mp = numPattern.findPrefixOf("99 apples, 87 bottles") //获取开始部分匹配的
println(mp) val wsmp = wsnumwsPattern.findPrefixOf("99 apples, 87 bottles") //获取开始部分匹配
println(wsmp) val rm = numPattern.replaceAllIn("99 apples, 87 bottles","xx") //替换所有匹配的项
println(rm) val rmf = numPattern.replaceFirstIn("99 apples, 87 bottles","xx") //替换第一个匹配的项
println(rmf)

结果:


Some(  )
Some()
None
xx apples, xx bottles
xx apples, bottles

十一、正则表达式组

  val numitemPattern = "([0-9]+) ([a-z]+)".r  //通过()区分开,多个子表达式

  val numitemPattern(num, item) = "99 apples"   //单个匹配
println(num,item) for(numitemPattern(num, item)<- numitemPattern.findAllIn("99 apples, 87 bottles")){//多个匹配项提取分组内容
println(num,item)
}

结果

(99,apples)
(99,apples)
(87,bottles)

参考《快学Scala》

Scala--文件和正则表达式的更多相关文章

  1. Scala学习(九)---文件和正则表达式

    文件和正则表达式 摘要: 在本篇中,你将学习如何执行常用的文件处理任务,比如从文件中读取所有行或单词,或者读取包含数字的文件等.本篇的要点包括: 1. Source.fromFile(...).get ...

  2. Scala学习笔记--正则表达式基础知识、如何在scala内使用

    正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...

  3. scala文件通过本地命令运行

    1.准备(检查) a.本地环境安装jdk b.安装scala 2.sublime编辑scala文件,并存放到F:\plan_next\scala_compile下 3.文件目录中切换到cmd中(文件目 ...

  4. 创建好maven项目以后发现无法创建scala文件

    今天创建了一个maven项目  然后准备创建scala文件的时候发现没有Scala 然后只好上网上找方法了 下面是一种解决方法 1.点击file,选择settings 进去之后,选择build  进去 ...

  5. Scala学习九——文件和正则表达式

    一.本章要点 Source.fromFile(...).getLines.toArray输出文件的所有行; Source.fromFile(...).mkString以字符串形式输出文件内容; 将字符 ...

  6. scala学习笔记(8)文件和正则表达式

    1.读取行 ---------------------------------------- 要读取文件中所有的行,可以调用scala.io.Source对象的getLine方法: import sc ...

  7. 快学Scala-第九章 文件和正则表达式

    知识点: 1.读取文件中的所有行,可以调用scala.io.Source对象的getLines方法: import scala.io.Source val source = Source.from(& ...

  8. Scala文件操作

    Scala中的文件操作基本可以依赖于Java的实现,包括输入.输出流的使用. object FileOps {def main(args: Array[String]) { val file = So ...

  9. Python 入门学习(贰)文件/文件夹正则表达式批量重命名工具

    基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 思路 Project 2 是一个去除文件名中所有数 ...

  10. 【std::regex】C++文件路径正则表达式

    今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过. std:: ...

随机推荐

  1. 【代码笔记】iOS-自定义switch

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> #import "CustomSwitch.h" ...

  2. 自定义多选框(checkbox)和单选框(radio)css样式

    直接上代码: input[type="radio"],input[type="checkbox"]{ -webkit-appearance: none; out ...

  3. PeopleSoft单点登录工作原理

    单点登录是指用户在仅通过一次身份验证后,可以在多个应用程序中自由切换. 这意味着用户只需要一次登录信息,只要他点击指向其他应用程序的链接,安全信息就会自动从一个应用程序传递到另一个应用程序,用户就不会 ...

  4. Asp Url汉字乱码的问题

    1.js <a target="_blank" href="/asp/download.asp?File=' + escape(item.FileName) + ' ...

  5. 成为Java顶尖程序员,先过了下面问题!

    一.数据结构与算法基础 说一下几种常见的排序算法和分别的复杂度. 用Java写一个冒泡排序算法 描述一下链式存储结构. 如何遍历一棵二叉树? 倒排一个LinkedList. 用Java写一个递归遍历目 ...

  6. 负载均衡(Load Balancing)学习笔记(一)

    概述 在分布式系统中,负载均衡(Load Balancing)是一种将任务分派到多个服务端进程的方法.例如,将一个HTTP请求派发到实际的Web服务器中执行的过程就涉及负载均衡的实现.一个HTTP请求 ...

  7. SQL2005中的事务与锁定(九)-(1)- 转载

    ------------------------------------------------------------------------ -- Author : HappyFlyStone - ...

  8. Linux命令(自学)

    1.立刻关机: shutdown -h now 2.立刻重启: shutdown -r now reboot 3.注销: logout 4.进入vi编辑器,写一个hello的java程序: vi he ...

  9. MySQL升级后 MySQL 5.7 时间不兼容问题

  10. jquery 比较全面的API中文版地址

    jquery中文API地址 里面有对各个版本的jquery的属性.方法等都有全面的介绍加例子,值得拥有!