Scala 中的文件处理
文件处理是一种将获取的信息存储在文件中的方法。 Scala 提供了包,我们可以从中创建、打开、读取和写入文件。为了在 Scala 中写入文件,我们从Java中借用Java .io._,因为在 Scala 标准库中我们没有写入文件的类。我们还可以导入Java.io.File 和Java.io.PrintWriter。
Creating a new file :
- java.io.File defines classes and interfaces for the JVM access files, file systems and attributes.
- File(String pathname) converts theparameter string to abstract path name, creating a new file instance.
Writing to the file
- java.io.PrintWriter includes all the printing methods included in PrintStream.
下面是创建一个新文件并写入它的实现。
// File handling program
import java.io.File
import java.io.PrintWriter
// Creating object
object Geeks
{
// Main method
def main(args:Array[String])
{
// Creating a file
val file_Object = new File("abc.txt" )
// Passing reference of file to the printwriter
val print_Writer = new PrintWriter(file_Object)
// Writing to the file
print_Writer.write("Hello, This is Geeks For Geeks")
// Closing printwriter
print_Writer.close()
}
}
创建了一个文本文件 abc.txt,其中包含字符串“Hello, This is Geeks For Geeks”
Scala 没有提供类来写入文件,但它提供了一个类来读取文件。这是类源。我们使用它的伴生对象来读取文件。要读取该文件的内容,我们调用 Source 类的 fromFile() 方法来读取包含文件名作为参数的文件的内容。
Reading a File
scala.io.Source includes methods for iterable representation of the source file.
Source.fromFile creates a source from the input file.
file.next return the next element in the iteration and moves the iterator one step ahead.
file.hasnext checks if there is next element available to iterate.
getLines– Iterate through file line by line
下面是从文件中读取每个字符的实现。
// Scala File handling program
import scala.io.Source
// Creating object
object GeeksScala
{
// Main method
def main(args : Array[String])
{
// file name
val fname = "abc.txt"
// creates iterable representation
// of the source file
val fSource = Source.fromFile(fname)
while (fSource.hasNext)
{
println(fSource.next)
}
// closing file
fSource.close()
}
}
输出:
我们可以使用 getLines() 方法一次读取单个行而不是整个文件。
下面是从文件中读取每一行的实现。
// Scala file handling program to Read each
// line from a single file
import scala.io.Source
// Creating object
object gfgScala
{
// Main method
def main(args:Array[String])
{
val fname = "abc.txt"
val fSource = Source.fromFile(fname)
for(line<-fSource.getLines)
{
println(line)
}
fSource.close()
}
}
输出: