最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Scala的文件讀寫(xiě)操作與正則表達(dá)式

 更新時(shí)間:2018年09月11日 15:06:29   作者:codegeekgao  
這篇文章主要介紹了Scala的文件讀寫(xiě)操作與正則表達(dá)式的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下

目錄

在本篇文章中你將會(huì)學(xué)習(xí)并了解常用的文件處理任務(wù),例如讀取文件的一行文本,本博客的要點(diǎn)包含:

1.Source.fromFile(...).getLines.toArray 輸出文件所有行
2.Source.fromFile(...).mkString 以字符串形式輸出文件內(nèi)容
3.將字符串轉(zhuǎn)換為數(shù)字,可以使用toInt或toDouble方法
4.使用java的PrintWriter寫(xiě)入文本文件
5.“正則”.r是一個(gè)Regex對(duì)象
6.若你的正則表達(dá)式包含反斜杠或者引號(hào),請(qǐng)用"""..."""
7.正則模式包含分組,可以使用for(regex(變量1...,變量2)<- 字符串)

本篇文章要點(diǎn)如下:

讀取行

// 讀取文件所有的行,可以調(diào)用scala.io.Source對(duì)象的getLines方法:
val source = Source.fromFile("a.txt","utf-8")
val lineIterator = source.getLines

結(jié)果是迭代器可以使用for循環(huán)處理這些行

for(i <- lineIterator) println(i)

也可以使用迭代器應(yīng)用toArray或toBuffer方法,將這些行放到數(shù)組力或者數(shù)組緩沖行中,若想將讀取的的文件作為一個(gè)字符串,只需val conents = source.mkString

下面是簡(jiǎn)單的代碼實(shí)例:讀取桌面上的a.txt

object ReadFile {
 def main(args: Array[String]): Unit = {
 val read = new ReadFile()
 val resource: String = "C:\\Users\\DonnieGao\\Desktop\\a.txt"
 val encode = "UTF-8"
 read.readFile(resource, encode)
 println(read.readFileToStr(resource, encode))
 }
}

class ReadFile {
 /**
 * 一行行讀取文件的內(nèi)容
 *
 * @param resource 文件路徑
 * @param code  文件編碼格式
 */
 def readFile(resource: String, code: String): Unit = {
 var source: BufferedSource = null
 try {
  // 獲取文件的Source對(duì)象,第一個(gè)參數(shù)是文件的路徑,第二個(gè)文件的編碼格式
  source = Source.fromFile(resource, code)
  val lineIterator = source.getLines()
  while (true) {
  if (lineIterator.hasNext) {
   println(lineIterator.next())
  } else {
   return
  }
  }
 } finally {
  // 釋放資源
  source.close()
 }
 }

 /**
 * 將文本文件所有內(nèi)容作為字符串
 *
 * @param resource 文件路徑
 * @param code  文件編碼格式
 * @return
 */
 def readFileToStr(resource: String, code: String): String = {
 // 獲取文件的Source對(duì)象,第一個(gè)參數(shù)是文件的路徑,第二個(gè)文件的編碼格式
 var source: BufferedSource = null
 try {
  source = Source.fromFile(resource, code)
  source.mkString
 } finally {
  source.close()
 }
 }
}

讀取字符

要將文件中讀取單個(gè)字符,可以把Source對(duì)象當(dāng)作迭代器,若僅僅只是想查看字符可以調(diào)用Source對(duì)象的buffered方法。

讀取詞法單元和數(shù)字

讀取源文件中所有空格隔開(kāi)的詞法單元

val tokens = source.mkString.split("\\s+")

若有個(gè)基本都是浮點(diǎn)型的文件,可以將其讀取到數(shù)組中:

val numbers = for (w <- tokens) yield w.toDouble 或者也可 
val numbers = token.map(_.toDouble)

讀取二進(jìn)制文件

Scala并沒(méi)有提供讀取二進(jìn)制文件的方法,可以使用java讀取二進(jìn)制的方法,代碼示例

val file = new File(fileName)
val in = new FileInputStream(file)
val bytes = new Array[Byte](file.length.toInt)
in.read(bytes)
in.close()

寫(xiě)入文本文件

Scala沒(méi)有內(nèi)建對(duì)寫(xiě)入文件的支持,可借助java進(jìn)行文件寫(xiě)入操作例如使用java.io.PrintWriter

 /**
 * Scala寫(xiě)入文借助java的PrintWriter
 */
 def write(): Unit = {
 val out = new PrintWriter("C:\\Users\\DonnieGao\\Desktop\\test.txt")
 for (i <- 0 to 100) out.println(i)
 out.close()
 }

訪問(wèn)文件目錄

Scala中沒(méi)有直接訪問(wèn)某個(gè)目錄下的所有文件的方式或者遞歸遍歷有目錄的類(lèi)

 /**
 * 使用java列舉下所有的文件夾
 * @param dir 文件目錄路徑
 */
 def dir(dir:String) = {
 val dirFile = new File(dir)
 val arrayFile= dirFile.listFiles()
 for (i <- arrayFile){println(arrayFile.toBuffer)}
 }

序列化

在java中聲明一個(gè)可以被序列號(hào)的類(lèi)通常是下面這種:

public class Person implements java.io.Serializable {
 private static final long serialVersionUID = 4436475322569107137L;
}

Scala中聲明一個(gè)可以被序列化的類(lèi)通常是下面這種:

@SerialVersionUID(12356L) class ReadFile extends Serializable {
 
}

正則表達(dá)式

Scala中提供了正則操作處理scala.util.matching.Regex讓這件事情可以變得簡(jiǎn)單。構(gòu)造一個(gè)Regex對(duì)象,用String類(lèi)的r方法即可

object RegexDemo {
 def main(args: Array[String]): Unit = {
 // 初始化正則對(duì)象
 val numPattern = "[0-9]+".r
 val regex = "13 welcome to beijing"
 // findAllIn方法返回遍歷所有匹配的迭代器,可以在for循環(huán)中使用
 for (matchString <- numPattern.findAllIn(regex)) {
  println(matchString)
 }
 // 查詢(xún)字符串首個(gè)匹配項(xiàng)
 println(numPattern.findFirstIn(regex))
 // 檢查某個(gè)字符串的開(kāi)始部分能匹配,可以使用findPrefixOf
 println(numPattern.findPrefixOf(regex))
 }

總結(jié)

以上所述是小編給大家介紹的Scala的文件讀寫(xiě)操作與正則表達(dá)式 ,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 在nest.js中通過(guò)正則表達(dá)式正確設(shè)置驗(yàn)證的方法

    在nest.js中通過(guò)正則表達(dá)式正確設(shè)置驗(yàn)證的方法

    這篇文章主要介紹了在nest.js中通過(guò)正則表達(dá)式正確設(shè)置驗(yàn)證的方法,文末給大家補(bǔ)充介紹了js正則表達(dá)式驗(yàn)證大全,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Python爬蟲(chóng)正則表達(dá)式常用符號(hào)和方法

    Python爬蟲(chóng)正則表達(dá)式常用符號(hào)和方法

    python語(yǔ)言雖然誕生很久,但是也是最近幾年才火起來(lái)的。在python語(yǔ)言中,我們經(jīng)常會(huì)用到python爬蟲(chóng)的正則表達(dá)式,下面小編通過(guò)本篇文章給大家介紹python爬蟲(chóng)正則表達(dá)式常用的符號(hào)和方法,以及具體用法,感興趣的童鞋快來(lái)看看吧
    2015-10-10
  • JavaScript 正則表達(dá)式(筆記)

    JavaScript 正則表達(dá)式(筆記)

    這篇文章主要介紹了JavaScript 正則表達(dá)式(筆記) ,這里總結(jié)了js中的一些正則的使用方法,需要的朋友可以參考下
    2015-04-04
  • ubb代碼轉(zhuǎn)換為html

    ubb代碼轉(zhuǎn)換為html

    ubb代碼轉(zhuǎn)換為html...
    2006-06-06
  • python3爬蟲(chóng)之入門(mén)基礎(chǔ)和正則表達(dá)式

    python3爬蟲(chóng)之入門(mén)基礎(chǔ)和正則表達(dá)式

    這篇文章主要介紹了python3爬蟲(chóng)之入門(mén)基礎(chǔ)和正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • UBB代碼在論壇中的應(yīng)用

    UBB代碼在論壇中的應(yīng)用

    UBB代碼在論壇中的應(yīng)用...
    2006-07-07
  • 12個(gè)常用的js正則表達(dá)式

    12個(gè)常用的js正則表達(dá)式

    這篇文章為大家分享了12個(gè)常用的js表單驗(yàn)證正則表達(dá)式,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),正則表達(dá)式是一個(gè)非常有用的功能,它提供了 查找,匹配,替換 句子,單詞,或者其他格式的字符串,需要的朋友可以參考下
    2015-11-11
  • linux grep與正則表達(dá)式使用介紹

    linux grep與正則表達(dá)式使用介紹

    grep (縮寫(xiě)來(lái)自Globally search a Regular Expression and Print)是一種強(qiáng)大的文本搜索工具,它能使用特定模式匹配(包括正則表達(dá)式)搜索文本,并默認(rèn)輸出匹配行
    2020-03-03
  • 正則表達(dá)式(regex)簡(jiǎn)介和基本用法小結(jié)

    正則表達(dá)式(regex)簡(jiǎn)介和基本用法小結(jié)

    正則表達(dá)式 (regex) 是用于模式匹配和文本操作的強(qiáng)大工具, 它們廣泛應(yīng)用于編程、文本處理、數(shù)據(jù)驗(yàn)證等領(lǐng)域,這篇文章主要介紹了正則表達(dá)式 (regex) 簡(jiǎn)介和基本用法,需要的朋友可以參考下
    2024-04-04
  • 正則表達(dá)式(簡(jiǎn)單易懂篇)

    正則表達(dá)式(簡(jiǎn)單易懂篇)

    正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)大工具。這篇文章主要介紹了正則表達(dá)式(簡(jiǎn)單易懂篇),需要的朋友參考下
    2017-01-01

最新評(píng)論

仙游县| 都昌县| 永川市| 涟水县| 兴文县| 张家港市| 集安市| 枞阳县| 卫辉市| 禄丰县| 女性| 正蓝旗| 星子县| 卢氏县| 嵩明县| 大竹县| 凤冈县| 洪湖市| 星子县| 郯城县| 全椒县| 霸州市| 商水县| 阿拉善盟| 敦化市| 东乡| 祥云县| 三门县| 循化| 分宜县| 江川县| 济南市| 怀来县| 江津市| 文安县| 阳江市| 临漳县| 旅游| 新巴尔虎右旗| 娱乐| 浮梁县|