📜  Scala-文件I O(1)

📅  最后修改于: 2023-12-03 14:47:17.490000             🧑  作者: Mango

Scala-文件 I/O

当处理数据时,Scala 提供了多种不同类型的文件 I/O 操作方法。我们可以利用这些操作来读写文件、处理数据、读取配置文件等。

读取文件

Scala 提供了多种方式用于读取文件内容。以下是常用的几种方法:

使用 Source.fromFile 方法

使用Scala内置的 Source类的 fromFile 方法和 getLines方法来读取文件并处理数据。

import scala.io.Source

val fileName = "test.txt"
for (line <- Source.fromFile(fileName).getLines) {
  println(line)
}
使用 BufferedSource.getLines 方法

另一种读取文件的方法是使用Source类的BufferedSource,它提供了更好的性能和安全性。

import scala.io.BufferedSource
import java.io._

val fileName = "test.txt"
val file = new File(fileName)
val source = new BufferedSource(new FileInputStream(file))
for (line <- source.getLines) {
  println(line)
}
使用 java.io.BufferedReader 和 java.io.FileReader

我们也可以使用Java I/O的FileReader和BufferedReader来读取文件内容。

import java.io._

val fileName = "test.txt"
val file = new File(fileName)
val br = new BufferedReader(new FileReader(file))
var line: String = null
while ({ line = br.readLine; line != null }) {
  println(line)
}
写入文件

Scala 同样提供了多种方式用于写入文件内容。

使用 java.io.PrintWriter
import java.io._

val fileName = "output.txt"
val pw = new PrintWriter(new File(fileName))
pw.write("Hello World")
pw.close()
使用 java.io.FileOutputStream 和 java.nio.charset.Charset
import java.io._
import java.nio.{ByteBuffer, CharBuffer}
import java.nio.charset.Charset

val fileName = "output.txt"
val message = "Hello World!"
val bytes = Charset.forName("UTF-8").encode(CharBuffer.wrap(message))

val stream = new FileOutputStream(fileName)
val channel = stream.getChannel()
channel.write(bytes)
channel.close()
stream.close()
将文件内容读取到字符串中

以下是两种将文件内容读取到字符串中的方法:

使用 Source.fromFile 方法
import scala.io.Source

val fileName = "test.txt"
val fileContents = Source.fromFile(fileName).getLines.mkString
使用 Java I/O 的 BufferedReader 和 BufferedReader.lines 方法
import java.io._

val fileName = "test.txt"
val buffer = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)))
val fileContents = buffer.lines().toArray().mkString
buffer.close()
把字符串写入文件

以下是将字符串写入文件的方法:

使用 Java I/O 的 BufferedWriter
import java.io._

val output = "Hello World!"
val file = new File("test.txt")
val bw = new BufferedWriter(new FileWriter(file))
bw.write(output)
bw.close()