scala當(dāng)中的文件操作和網(wǎng)絡(luò)請求的實(shí)現(xiàn)方法
1、讀取文件當(dāng)中每一行的數(shù)據(jù)
def main(args: Array[String]): Unit = {
//注意文件的編碼格式,如果編碼格式不對,那么讀取報(bào)錯(cuò)
val file: BufferedSource = Source.fromFile("F:\\files\\file.txt","GBK");
val lines: Iterator[String] = file.getLines()
for(line <- lines){
println(line)
}
//注意關(guān)閉文件
file.close()
}
如果要將文件內(nèi)容轉(zhuǎn)數(shù)組,直接調(diào)用toArray即可
2、讀取詞法單元和數(shù)字
如果想將以某個(gè)字符或某個(gè)正則表達(dá)式分開的字符成組讀取,可以這么做:
def main(args: Array[String]): Unit = {
val file: BufferedSource = Source.fromFile("F:\\files\\file2.txt","GBK");
val split: Array[String] = file.mkString.split(" ")
println(split.mkString("\t"))
file.close()
}
3、讀取網(wǎng)絡(luò)資源、文件寫入、控制臺操作
1、讀取網(wǎng)絡(luò)資源
def main(args: Array[String]): Unit = {
val source: BufferedSource = Source.fromURL("http://www.baidu.com")
val string: String = source.mkString
println(string)
source.close()
}
2、文件寫入操作
def main(args: Array[String]): Unit = {
val writer = new PrintWriter("F:files\\printWriter.txt")
for(i <- 1 to 100){
writer.println(i)
writer.flush()
}
writer.close()
}
3、控制臺交互操作
def main(args: Array[String]): Unit = {
//控制臺交互--老API
print("請輸入內(nèi)容:")
val consoleLine1 = Console.readLine()
println("剛才輸入的內(nèi)容是:" + consoleLine1)
//控制臺交互--新API
print("請輸入內(nèi)容(新API):")
val consoleLine2 = StdIn.readLine()
println("剛才輸入的內(nèi)容是:" + consoleLine2)
}
4、scala當(dāng)中的序列化
@SerialVersionUID(1L)
class Person extends Serializable{
override def toString = name + "," + age
val name = "Nick"
val age = 20
}
object PersonMain extends App{
override def main(args: Array[String]): Unit = {
import java.io.{FileOutputStream, FileInputStream, ObjectOutputStream, ObjectInputStream}
val nick = new Person
val out = new ObjectOutputStream(new FileOutputStream("Nick.obj"))
out.writeObject(nick)
out.close()
val in = new ObjectInputStream(new FileInputStream("Nick.obj"))
val saveNick = in.readObject()
in.close()
println(saveNick)
}
}
5、scala當(dāng)中的正則表達(dá)式
我們可以通過正則表達(dá)式匹配一個(gè)句子中所有符合匹配的內(nèi)容,并輸出:
def main(args: Array[String]): Unit = {
import scala.util.matching.Regex
val pattern1 = new Regex("(S|s)cala")
val pattern2 = "(S|s)cala".r
val str = "Scala is scalable and cool"
println((pattern2 findAllIn str).mkString(","))
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于javax.validation結(jié)合spring的最佳實(shí)踐
這篇文章主要介紹了javax.validation結(jié)合spring的最佳實(shí)踐,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringCloud添加客戶端Eureka Client過程解析
這篇文章主要介紹了SpringCloud添加客戶端Eureka Client過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
基于Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-03-03
Java?事務(wù)注解@Transactional回滾(try?catch、嵌套)問題
這篇文章主要介紹了Java?@Transactional回滾(try?catch、嵌套)問題,Spring?事務(wù)注解?@Transactional?本來可以保證原子性,如果事務(wù)內(nèi)有報(bào)錯(cuò)的話,整個(gè)事務(wù)可以保證回滾,但是加上try?catch或者事務(wù)嵌套,可能會(huì)導(dǎo)致事務(wù)回滾失敗2022-08-08
關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別
這篇文章主要介紹了關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
淺談SpringBoot在使用測試的時(shí)候是否需要@RunWith
本文主要介紹了淺談SpringBoot在使用測試的時(shí)候是否需要@RunWith,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

