2023學(xué)年完整公開課版文件操作_第1頁
2023學(xué)年完整公開課版文件操作_第2頁
2023學(xué)年完整公開課版文件操作_第3頁
2023學(xué)年完整公開課版文件操作_第4頁
2023學(xué)年完整公開課版文件操作_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

文件操作讀取行讀取文件中的所有行,可以調(diào)用scala.io.Source對象的getLines方法:importscala.io.Source

valsource=Source.fromFile("d:\\data.txt","UTF-8")val

lineIteractor=

source.getLinesfor(i<-

lineIteractor)println(i)source.close()更簡潔的寫法:Source.fromFile("d:\\bb.txt").foreach{

print}讀取字符要從文件中讀取單個(gè)字符,可以直接把Source對象當(dāng)做迭代器,因?yàn)镾ource類擴(kuò)展自Iterator[Char]:valsource=Source.fromFile("d:\\data.txt","UTF-8")

for(c<-source){

println(c)

}讀取詞法單元或數(shù)字通過split方法對轉(zhuǎn)化成行的文件內(nèi)容進(jìn)行劃分,讀取源文件中所有以空格隔開的詞法單元:valtokens=source.mkString.split(“\\s+”)通過toInt或toDouble方法把字符轉(zhuǎn)化成整數(shù)或浮點(diǎn)數(shù)。valnum=for(w<-tokens)yieldw.toDouble從控制臺讀取數(shù)字readInt()readDouble()readLong()從URL或其他源讀取從URL讀取數(shù)據(jù)valsource1=Source.fromURL("")從給定的字符串讀取數(shù)據(jù)valsource2=Source.fromString("Hello,world!")從標(biāo)準(zhǔn)輸入讀取valsource3=Source.stdin讀取二進(jìn)制文件scala并沒有提供讀取二進(jìn)制文件的方法,需要使用java類庫valin=newFileInputStream("D:\\data.txt")

vari=in.read

while(i!=-1){

System.out.print(i.toChar)

i=in.read

}

in.close()從控制臺上讀取用戶輸入objectTest{defmain(args:Array[String]){print("請輸入:")valline=Console.readLine

println("謝謝,你輸入的是:"+line)}}寫入文本文件Scala沒有內(nèi)建的對寫入文件的支持,要寫入文件,可使用java.io.PrintWriter.val

out=newPrintWriter("d:\\numbers.txt")

for(i<-1to100)

out.println(i)

out.close()訪問目錄遍歷某目錄下所有的子目錄

def

main(args:Array[String]):Unit={

for(d<-subDir(newFile("G:\\視頻\\")))

println(d)

}

def

subDir(dir:File):Iterator[File]={

val

children=dir.listFiles().filter(_.isDirectory())

children.toIterator++children.toIterator.flatMap(subDir

_)

}訪問目錄下的文件遍歷某目錄下所有的文件和子文件def

main(args:Array[String]):Unit={

for(d<-subDir(newFile("G:\\視頻\\")))

println(d)

}

def

subDir(dir:File):Iterator[File]={

val

dirs=dir.listFiles().filter(_.isDirectory())

val

files=dir.listFiles().filter(_.isFile())

files.toIterator++dirs.toIterator.flatMap(subDir

_)

}正則表達(dá)式當(dāng)在處理輸入的時(shí)候,經(jīng)常會想要用正則表達(dá)式來分析它。scala.util.matching.Regex類讓這件事情變得簡單。要構(gòu)造一個(gè)Regex對象,用String類的r方法即可:val

numPattern="[0-9]+".rfindAllln方法返回遍歷所有匹配項(xiàng)的迭代器for(matchString<-numPattern.findAllIn("99bottles,98bottles"))valmatches=numPattern.findAllln(“99bottles,98bottles”).toArray //將迭代器轉(zhuǎn)成數(shù)組

正則表達(dá)式組分組可以讓我們方便地獲取正則表達(dá)式的子表達(dá)式,在想要提取的子表達(dá)式兩側(cè)加上圓括號。valnumitemPattern="([0-9]+)([a-z]+)".r要匹配組,可以把正則表達(dá)式對象當(dāng)做"提取器"使用val

numitemPattern(num,item)="99bottles"從多個(gè)匹配項(xiàng)中提取分組內(nèi)容for(numitemPattern(num,item)<-numitemPattern

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論