Scala檔案操作詳解
遍歷一個檔案中的每一行
必須匯入scala.io.Source
類: import scala.io.Source
- 方法一: 使用
Source.getLines
返回的迭代器
val source = Source.fromFile("C://Users//Administrator//Desktop//test.txt", "UTF-8")
val lineIterator = source.getLines
for (line <- lineIterator) println(line)
- 方法二: 將
Source.getLines
返回的迭代器,轉換成陣列
這裡說明一點: 一個BufferedSource
物件的getLines
方法,只能呼叫一次,一次呼叫完之後,遍歷了迭代器裡所有的內容,就已經把檔案裡的內容讀取完了
如果反覆呼叫source.getLines
,是獲取不到內容的
此時,必須重新建立一個BufferedSource
物件
val source = Source.fromFile("C://Users//Administrator//Desktop//test.txt", "UTF-8")
val lines = source.getLines.toArray
for(line <- lines) println(line)
- 方法三: 呼叫
Source.mkString
,返回文字中所有的內容
val source = Source.fromFile("C://Users//Administrator//Desktop//test.txt", "UTF-8")
val lines = source.mkString
使用完BufferedSource
物件之後,呼叫BufferedSource.close
方法,關閉IO流資源
遍歷一個檔案中的每一個字元
BufferedSource
,也實現了一個Iterator[Char]
的這麼一個trait
val source = Source.fromFile("C://Users//Administrator//Desktop//test.txt", "UTF-8")
for(c <- source) print(c)
從URL以及字串中讀取字元
val source = Source.fromURL("http://www.baidu.com", "UTF-8")
val source = Source.fromString("Hello World")
結合Java IO流,讀取任意檔案
spark的原始碼是由scala和java共同編寫而成的,Java的多執行緒
scala,本身的程式語言的功能,就不是特別的強大和完善,比如說,scala甚至不能很方便地寫檔案,必須依賴於java的io流才可以
所以說,scala,其實主要就是針對某些特定領域的一些複雜系統的,比較適用的一種程式語言而已
完全無法替代java的,scala和java是相輔相成,榮辱與共的這麼一種,共生關係
案例: 結合java IO流,做一個檔案拷貝的案例
import java.io._
val fis = new FileInputStream(new File("C://Users//Administrator//Desktop//test.txt"))
val fos = new FileOutputStream(new File("C://Users//Administrator//Desktop//test3.txt"))
val buf = new Array[Byte](1024)
fis.read(buf)
fos.write(buf, 0, 1024)
fis.close()
fos.close()
結合Java IO流,寫檔案
val pw = new PrintWriter("C://Users//Administrator//Desktop//test4.txt")
pw.println("Hello World")
pw.close()
遞迴遍歷子目錄
def getSubdirIterator(dir: File): Iterator[File] = {
val childDirs = dir.listFiles.filter(_.isDirectory)
childDirs.toIterator ++ childDirs.toIterator.flatMap(getSubdirIterator _)
}
val iterator = getSubdirIterator(new File("C://Users//Administrator//Desktop"))
for(d <- iterator) println(d)
序列化以及反序列化(Java序列化和反序列化機制)
如果要序列化,那麼就必須讓類,有一個@SerialVersionUID
,定義一個版本號
要讓類繼承一個Serializable trait
@SerialVersionUID(42L) class Person(val name: String) extends Serializable
val leo = new Person("leo")
import java.io._
val oos = new ObjectOutputStream(new FileOutputStream("C://Users//Administrator//Desktop//test.obj"))
oos.writeObject(leo)
oos.close()
val ois = new ObjectInputStream(new FileInputStream("C://Users//Administrator//Desktop//test.obj"))
val restoredLeo = ois.readObject().asInstanceOf[Person]
restoredLeo.name
相關文章
- Spark基礎-Scala檔案操作Spark
- Scala檔案的讀寫操作
- C++ 檔案操作詳解C++
- JavaScript 檔案操作方法詳解JavaScript
- Python3 檔案操作詳解Python
- 詳解python檔案讀寫操作Python
- Java對各種檔案的操作詳解Java
- Python操作HDF5檔案示例詳解Python
- Scala模式匹配詳解模式
- Dockerfile檔案詳解Docker
- mtl檔案詳解
- cmake檔案詳解
- BMP檔案詳解
- LD檔案詳解
- Python:檔案操作詳細教程Python
- java class檔案詳解Java
- JavaScript 檔案物件詳解JavaScript物件
- redis 配置檔案詳解Redis
- Class 檔案格式詳解
- haproxy配置檔案詳解
- redis配置檔案詳解Redis
- Dockerfile檔案全面詳解Docker
- SSH配置檔案詳解
- zookeeper配置檔案詳解
- nginx配置檔案詳解Nginx
- WCF配置檔案詳解
- Java Class檔案詳解Java
- 控制檔案詳解(轉)
- /etc/fstab檔案詳解
- scala簡要:檔案訪問
- Scala操作Map
- Scala操作MongoDBMongoDB
- JPEG檔案編/解碼詳解 .
- Scala的安裝以及建立Scala專案的詳細步驟
- Linux 檔案屬性及詳細操作Linux
- Nginx的配置檔案詳解Nginx
- MachO 檔案結構詳解Mac
- managed-schema 檔案詳解