scala中遍历文件中的每一行必须导入scala.io.Source类:import scala.io.Source
- 使用Source.getLines返回的迭代器(只能调用一次,再次调用会清空)
val source = Source.fromFile("E://a.txt","UTF-8")
val lines=source.getLines
for(line <- lines )println(line)
- 将Source.getLines返回的迭代器转换成字数组
val source = Source.fromFile("E://a.txt","UTF-8")
val lines=source.getLines.toArray
for(line <- lines )println(line)
- 调用Source.makString,返回文本中的所有内容
val source = Source.fromFile("E://a.txt","UTF-8")
val lines=source.mkString
使用Source对象之后,使用Source.close方法关闭IO流
- 遍历文件中的每一个字符
val source = Source.fromFile("E://a.txt","UTF-8"
for(i <- source)print(i)
- 从URL以及字符串中读取字符
val html=Source.fromFile("http://www.baidu.com","UTF-8")
html.mkString
- 结合java的IO流,写文件(spark 中大量运用了java的多线程,spark是Scala和java共同编写而成,scala必须依赖于java的IO流读写文件)
import
val file=new File("E://a.txt")
val bytes=new Array[Bytes](file.length.toInt)
val fis=new FileInputStream(file)
fis.read(bytes)
fis.lose()
val pw=new PrintWriter("E://a.txt")
pw.println("Hello world")
pw.close()
- 递归遍历子目录
def getSubdir(dir:file):Iterator[file]={val childDir=dir.listFiles.filter(_.isDirectory)
chilDirs.toIterator ++ childDirs.toIterator.flatMap(dubdirs _)
}
val iterator=subdirs(new file("E://a.txt"))
for(a <- iterator)println(a)
- 序列化和反序列化
@SerialVersionUID(42L) class Person(val name:String)extends Serializabl
val leo = new Person("leo")
import java.io._
val oos=new ObjectOutputStream (new FileOutputStream("e://a.txt"))
oos.writeObject(leo)
oos.close()
val ois=new ObjectInputStean(new FileInputStream("e://b.txt"))
val res=ois.readObject().asInstanceOf(Person)
res.name