Scala 中的文件操作
生活随笔
收集整理的這篇文章主要介紹了
Scala 中的文件操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.寫入文件
1.FileWriter
專門用于處理文件的字符寫入流對象
import java.io.FileWriter println(Try{val out = new FileWriter("/home/hadoop3/file/num1.txt",true) for (i <- 0 to 15)out.write(i.toString)out.close() })new FileWriter("/home/hadoop3/file/num1.txt",true)如果文件不存在,則會新建文件,true是在文件末尾追加寫入,默認為false,從文件開頭重新寫,如果之前有內容,則會刪除原有內容。
2.RandomAccessFile
該對象特點:
1,該對象只能操作文件,所以構造函數接收兩種類型的參數。
-
a.字符串路徑。
-
b.File對象。
2,該對象既可以對文件進行讀取,也可以寫入。
在進行對象實例化時,必須要指定的該對象的操作模式,r rw等。
注意;該對象在實例化時,如果要操作的文件不存在,會自動建立。
如果要操作的文件存在,則不會建立。
如果存在的文件有數據,那么在沒有指定指針位置的情況下,寫入數據,會將文件開頭的數據覆蓋。
import java.io.RandomAccessFile val randomFile = new RandomAccessFile("/home/hadoop3/file/num.txt","rw") val fileLength = randomFile.length; //得到文件長度randomFile.seek(fileLength);//指針指向文件末尾 for(i<- 'a' to 'g') randomFile.writeBytes(i.toString);//寫入數據 randomFile.close();2.讀文件
1.讀取行
import scala.io.Source val source = Source.fromFile("myfile.txt", "UTF-8") // 第一個參數可以是字符串或java.io.File //如果你知道文件使用的是當前平臺缺省的字符編碼,則可以略去第二個字符編碼參數 val lineIterator = source.getLines for(L <- lineIterator) 處理 L//或者也可以對迭代器應用toArray或toBuffer方法,將這些行放到數組或數組緩沖中 val lines = source.getLines.toArray val contents = source.mkStringsource.close() //記得調用close2.讀取字符
import scala.io.Source val source = Source.fromFile("myfile.txt", "UTF-8") for (c <- source) 處理 c//想查看某個字符但又不處理它的話,可以調用source對象的buffered方法 val source = Source.fromFile("myfile.txt", "UTF-8") val iter = source.buffered while (iter.hasNext){if(iter.head 是符合預期的)處理 iter.nextelse ... } source.close()3.讀取詞法單元和數字
val tokens = source.mkString.split("\\s+")val numbers = for(w <- tokens) yield w.toDouble //或者 val numbers = tokens.map(_.toDouble)4.讀取二進制文件
val file = new File(filename) val in = new FileInputSteam(file) val bytes = new Array[Byte](file.length.toInt) in.read(bytes) in.close()3.從URL或其他源讀取
val source1 = Source.fromURL("http://horstamnn.com","UTF-8") val source2 = Source.fromString("Hello, World!")//從給定的字符串讀取——對調試很有用val source3 = Source.stdin//從標準輸入讀取總結
以上是生活随笔為你收集整理的Scala 中的文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux的lsof命令详解
- 下一篇: livy提交任务报错com.cloude