0%

scala文件操作

scala文件操作

scala的文件操作相关类是在scala.io包下

读取行

可以使用getLines方法来读取文件中的所有行

1
2
3
4
5
6
7
8
9
10
val source: BufferedSource = Source.fromFile("TestImplicit.scala", "UTF-8")
// 读取行
val value: Iterator[String] = source.getLines()
// 输出每行
for (line <- value) {
println(line)
}

// 也可以直接输出整个文件内容
println(source.mkString)

执行shell命令

scala执行shell命令非常简单

1
2
3
4
5
6
7
8
// shell命令执行
// process包中包含了一个从字符串到ProcessBuilder对象的隐式转换
// !操作的就是ProcessBuilder对象,返回的结果是执行程序的返回值
import sys.process._
"ls -al /scala_study/src"!
// 如果使用!!,会以字符串的形式返回
val str = "ls -al /Users/zhanghe/Desktop/user/myself/GitProject/scala_study/src" !!;
println(str)

还支持管道符

1
2
// 还支持管道来将结果传递到另一个程序  #|就是管道符
"ls -al /Users/zhanghe/Desktop/user/myself/GitProject/scala_study/src" #| "grep main" !

支持重定向

1
2
3
4
5
6
7
8
9
10
import java.io.File

// #> 输出重定向到文件
"ls -al /Users/zhanghe/Desktop/user/myself/GitProject/scala_study/src" #> new File("output.txt")!

// #>> 输出重定向到文件,追加
"ls -al /Users/zhanghe/Desktop/user/myself/GitProject/scala_study/src" #>> new File("output.txt")!

// #< 从文件输出
"grep main" #< new File("output.txt")!

发现就是在shell的基础上加了个#

如 管道符|变成了#|,重定向>变成了#>

欢迎关注我的其它发布渠道