Scala文件读写操作与正则表达式
Scala语言提供了多种文件读写操作的方式,包括读取文本文件、读取二进制文件等。在Scala中,可以使用scala.io.Source对象来读取文件,该对象提供了多种方法来读取文件,例如getLines()方法可以读取文件的所有行,mkString()方法可以将文件的内容作为字符串输出。
读取文本文件
在Scala中,可以使用scala.io.Source对象来读取文本文件。例如,可以使用下面的代码来读取文件的所有行:
```scala
val source = Source.fromFile("a.txt", "utf-8")
val lineIterator = source.getLines
for (i <- lineIterator) println(i)
```
也可以使用迭代器应用toArray或toBuffer方法,将这些行放到数组力或者数组缓冲行中。
如果想将读取的文件作为一个字符串,只需使用mkString()方法:
```scala
val contents = source.mkString
```
读取单个字符
要将文件中读取单个字符,可以把Source对象当作迭代器,若仅仅只是想查看字符可以调用Source对象的buffered方法。
读取词法单元和数字
读取源文件中所有空格隔开的词法单元可以使用mkString()方法和split()方法:
```scala
val tokens = source.mkString.split("\\s+")
```
若有个基本都是浮点型的文件,可以将其读取到数组中:
```scala
val numbers = for (w <- tokens) yield w.toDouble
```
或者也可以使用map()方法:
```scala
val numbers = tokens.map(_.toDouble)
```
正则表达式
Scala语言提供了对正则表达式的支持,可以使用scala.util.matching.Regex对象来使用正则表达式。例如,可以使用下面的代码来匹配字符串:
```scala
val regex = "hello".r
val str = "hello world"
if (str match regex) println("匹配成功")
```
也可以使用for表达式来匹配字符串:
```scala
val regex = "hello".r
val str = "hello world"
for (regex(x, y) <- regex.regex(str)) println(x, y)
```
写入文本文件
在Scala中,可以使用java的PrintWriter对象来写入文本文件。例如,可以使用下面的代码来写入文件:
```scala
val writer = new PrintWriter("a.txt")
writer.println("Hello, World!")
writer.close()
```
Scala语言提供了多种文件读写操作的方式,可以满足不同的需求。同时,Scala也提供了对正则表达式的支持,可以方便地进行字符串匹配等操作。