Scala中的文件操作
文件读取
在Scala中,如果只是简单的读取文件内容,可以有两种方法,第一是使用Java的API,第二种就是使用scala.io.Source
模块。
读取行
import scala.io.Source;
object Demo extends App {
val filename = "/Users/Phoebe/Documents/haha.txt";
// Source.fromFile的第一个参数可以是字符串或java.io.File
//第二个是字符编码参数
for(line <- Source.fromFile(filename, 'UTF-8').getLines){
println(line);
}
val lines = Source.fromFile(filename).getLines.toList;
//file.getLines()返回的是一个Iterator
for(line <- lines){
println(line.reverse);
}
val contents = Source.fromFile(filename).mkString
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
读字符
import scala.io.Source;
object Demo extends App {
val filename = "/Users/Phoebe/Documents/my-key-pair.pem"
for (c <- Source.fromFile(filename, "UTF-8")) {
println(c)
}
val iter = Source.fromFile(filename, "UTF-8").buffered
while (iter.hasNext){
println(iter.head)
iter.next
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
网络资源读取
import scala.io.Source;
object Demo extends App {
val webFile = Source.fromURL("https://github.com/Mr-Phoebe")
webFile.foreach(print)
webFile.close()
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
文件写入
PrintWriter
import java.io.PrintWriter
import java.io.File
import java.io.FileWriter
object Demo extends App {
val writer = new PrintWriter(new File("learningScala.txt"))
for(i <- 1 to 100)
writer.println(i)
writer.close()
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
FileWriter
import java.io.PrintWriter
import java.io.File
import java.io.FileWriter
object Demo extends App {
val writer = new FileWriter("learningScala.txt", true)
// true 表示追加
// false 表示覆盖
for (i <- 0 to 15)
writer.write(i.toString)
writer.close()
}