Scala 文件 I-O
Scala 文件 I/O
Scala提供了许多用于文件I/O的API,可以读取、写入、复制等各种操作文件。使用Scala文件I/O,您需要使用Java的File类和库,并添加一些Scala特有的语法。
读取文件
在Scala中,有许多读取文件的方法,其中最常见的是使用Source类和Java的BufferedReader类。以下是使用这两种方法读取文件的示例:
import scala.io.Source
import java.io.BufferedReader
import java.io.FileReader
//使用Source类读取文件
val fileName = "/path/to/your/file"
val fileContent = Source.fromFile(fileName).getLines.mkString("\n")
//使用BufferedReader类读取文件
val fileReader = new BufferedReader(new FileReader(fileName))
val buffer = collection.mutable.ArrayBuffer[String]()
var line: String = null
while ({line = fileReader.readLine(); line != null}) {
buffer.append(line)
}
val fileContent = buffer.mkString("\n")
写文件
Scala文件I/O允许使用Java的FileWriter类和PrintWriter类来写入文件。以下是使用这两种方法写入文件的示例:
import java.io.{FileWriter,PrintWriter}
val fileName = "/path/to/your/file"
val fileWriter = new FileWriter(fileName)
val printWriter = new PrintWriter(fileWriter)
printWriter.println("Hello")
printWriter.close()
复制文件
要在Scala中复制文件,您可以使用Java的InputStream和OutputStream类和库。以下是使用这两种方法复制文件的示例:
import java.io.{File, FileInputStream, FileOutputStream, IOException}
//复制单个文件
def copyFile(source: File, dest: File) {
val inputStream = new FileInputStream(source)
val outputStream = new FileOutputStream(dest)
val buffer = new Array[Byte](1024)
var length = 0
while ({ length = inputStream.read(buffer); length > 0 }) {
outputStream.write(buffer, 0, length)
}
inputStream.close()
outputStream.close()
}
//复制目录
def copyDirectory(source: File, dest: File) {
if (source.isDirectory()) {
if (!dest.exists()) {
dest.mkdir()
}
val files = source.list()
for (file <- files) {
val srcFile = new File(source, file)
val destFile = new File(dest, file)
copyDirectory(srcFile, destFile)
}
} else {
copyFile(source, dest)
}
}
综合示例
以下是一个综合示例,演示了如何读取文件并写入另一个文件:
import scala.io.Source
import java.io.{File,FileWriter,IOException,PrintWriter}
val inputFileName = "/path/to/your/input/file"
val outputFileName = "/path/to/your/output/file"
val fileContent = Source.fromFile(inputFileName).getLines.mkString("\n")
val outputFile = new File(outputFileName)
val printWriter = new PrintWriter(new FileWriter(outputFile))
printWriter.write(fileContent)
printWriter.close()
总结
在Scala中,使用Java的File类和库,可以进行文件I/O操作,支持读取、写入、复制等。Scala特有的语法可以使文件操作更加简单和容易。