关闭

[Scala]Scala学习笔记六 文件

标签: scala文件
417人阅读 评论(0) 收藏 举报
分类:

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)
}
0
0
查看评论

Scala学习笔记1 - 基础

本文档针对scala 2.10.x,由于scala目前发展迅速,因此可能会和其他版本的不同。 ===概述          scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结...
  • guohecang
  • guohecang
  • 2016-08-04 11:47
  • 751

SCALA学习笔记(一)

变量 获取变量的值是一个耗时的工作时,可以考虑使用lazy var. lazy val forLater = someTimeConsumingOperation() scala> val first :: rest = List(1, 2, 3) first: Int = 1...
  • bluishglc
  • bluishglc
  • 2015-02-27 08:46
  • 23541

Scala的学习笔记_第一天

以一次接触Scala,记下的部分笔记,内容还会持续的更新,学习.
  • Abandon_Sun
  • Abandon_Sun
  • 2017-07-25 21:41
  • 209

Scala学习六:Scala中的特殊字符

Scala学习六:Scala中的特殊字符
  • pengyajie
  • pengyajie
  • 2017-05-17 18:24
  • 474

Scala 文件操作

1.写入文件1.FileWriter专门用于处理文件的字符写入流对象import java.io.FileWriter println(Try{ val out = new FileWriter("/home/hadoop3/file/num1.txt",true) f...
  • power0405hf
  • power0405hf
  • 2015-12-31 15:17
  • 4694

Scala 学习笔记1(介绍)

1.   Scala有多cool “Put productivity & creativity back in the hands of developers”   1.1.     ...
  • zhangjianbo1989
  • zhangjianbo1989
  • 2014-09-02 09:17
  • 192

scala中的特殊符号

4种操作符的区别和联系 :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表。用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素,也就是说新生成的列表长度为list的长度+1(btw, x::list等价于list.::(x)...
  • u011163372
  • u011163372
  • 2017-03-02 10:22
  • 611

命令行编译运行scala文件

package com.xx.yy import java.util._; object HelloWorld { def main(args: Array[String]) { println("Hello World!"); ...
  • u013597009
  • u013597009
  • 2017-02-10 17:07
  • 3853

Scala 获取指定目录下的所有文件

Scala 获取指定目录下的所有文件名(不包括目录名)
  • dai451954706
  • dai451954706
  • 2015-01-05 22:37
  • 6059

Scala中遍历文件、删除文件和目录

Scala中遍历文件、删除文件和目录
  • u010225915
  • u010225915
  • 2017-03-09 22:06
  • 1439
    个人资料
    • 访问:1517578次
    • 积分:22609
    • 等级:
    • 排名:第378名
    • 原创:624篇
    • 转载:133篇
    • 译文:60篇
    • 评论:189条
    博客专栏
    文章分类
    最新评论