[Scala]Scala学习笔记六 文件

原创 2017年08月02日 12:09:01

1. 读取行

读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法:

val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
val lineIterator = source.getLines()
for(line <- lineIterator){
  println(line)
}
source.close()

source.getLines返回结果为一个迭代器,可以遍历迭代器逐条处理行.

如果想吧整个文件当做一个字符串处理,可以调用mkString方法:

val content = source.mkString

备注

在用完Source对象后,记得调用close方法进行关闭

2. 读取字符

读取字符,可以直接把Source对象当做迭代器使用,因为Source类扩展了Iterator[Char]:

val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
for(c <- source){
  print(c + " ")
}

3. 从URL或其他源读取数据

Source对象有读取非文件源的方法:

// 从URL中读取数据
val sourceUrl = Source.fromURL("http://xxx", "UTF-8")
// 从字符串中读取数据
val sourceStr = Source.fromString("Hello World!")
// 从标准输入读取数据
val sourceStd = Source.stdin

4. 读取二进制文件

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()

5. 写入文本文件

Scala并没有内置的对写入文件的支持.但是可以使用java.io.PrintWriter来完成:

val out = new PrintWriter("/home/xiaosi/exception.txt")
out.println("Hello World")
out.println("Welcome")
out.close()

6. 访问目录

目前Scala并没有用来访问某个目录中的所有文件,或者递归的遍历所有目录的类,我们只能寻求一些替代方案.

利用如下代码可以实现递归遍历所有的子目录:

// 递归遍历目录
def subDirs(dir: File) : Iterator[File] = {
  val children = dir.listFiles().filter(_.isDirectory)
  children.toIterator ++ children.toIterator.flatMap(subDirs _)
}

val file = new File("/home/xiaosi/test")
val iterator = subDirs(file)
for(d <- iterator){
  println(d)
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

scala学习笔记-文件和正则表达式

1. 读取行 读取文件中的所有行: 调用scala.ios.Source对象的getLines方法: import scala.ios.Source var source=Source.fromFil...

scala学习笔记之文件IO操作

Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File):1.读取本地磁盘var source = Source.fromFile("D:\\test.txt...

快学Scala学习笔记及习题解答(9文件和正则)

本文scala使用的版本是2.11.7第九章 文件和正则表达式9.1 文件读取行import scala.io.Sourceval source = Source.fromFile("myfile.t...

scala学习笔记

  • 2016年04月13日 11:44
  • 9KB
  • 下载

Scala编程_学习笔记

  • 2016年12月18日 19:16
  • 4.71MB
  • 下载

Scala学习笔记(六) - 操作符与字面量

Scala中的字面量与Java中的基本一样,只有String类型略有差别。 例如: val i =1 (普通数字) val i = 0xf(16进制) val i = 35L(...

Scala学习笔记(六) - 操作符与字面量

Scala中的字面量与Java中的基本一样,只有String类型略有差别。 例如: val i =1 (普通数字) val i = 0xf(16进制) val i = 35L(long) v...
  • expt
  • expt
  • 2012年08月02日 17:47
  • 8645

scala编程学习笔记(一)变量定义函数定义

变量定义: val:类似java中final类型的变量 1,基本格式:val 变量名:变量类型 = 值2,其中有时变量类型可以省略,可以自动识别3,变量不能赋值,修改 var :等同于java中的非...

scala学习笔记1-泛型、界定、形变、this.type、复合类型、抽象类型

泛型、界定、形变、this.type、复合类型、抽象类型
  • sucabit
  • sucabit
  • 2015年11月23日 22:40
  • 1924
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Scala]Scala学习笔记六 文件
举报原因:
原因补充:

(最多只允许输入30个字)