前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala 学习笔记之文件操作

Scala 学习笔记之文件操作

作者头像
smartsi
发布2019-08-07 08:26:20
5600
发布2019-08-07 08:26:20
举报
文章被收录于专栏:SmartSi

1. 读取行

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

代码语言:javascript
复制
val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
val lineIterator = source.getLines()
for(line <- lineIterator){
  println(line)
}
source.close()

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

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

代码语言:javascript
复制
val content = source.mkString

备注

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

2. 读取字符

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

代码语言:javascript
复制
val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
for(c <- source){
  print(c + " ")
}

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

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

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

4. 读取二进制文件

Scala并没有提供读取二进制文件的方法.但是你可以使用Java类库来完成读取操作:

代码语言:javascript
复制
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 来完成:

代码语言:javascript
复制
val out = new PrintWriter("/home/xiaosi/exception.txt")
out.println("Hello World")
out.println("Welcome")
out.close()

6. 访问目录

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

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

代码语言:javascript
复制
// 递归遍历目录
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)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 读取行
  • 2. 读取字符
  • 3. 从URL或其他源读取数据
  • 4. 读取二进制文件
  • 5. 写入文本文件
  • 6. 访问目录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档