1. 程式人生 > >[Scala]學習筆記六——讀取外部資料

[Scala]學習筆記六——讀取外部資料

1.讀取檔案及網路資料

object ReadFileApp extends App {
  val file=scala.io.Source.fromFile("E:\\data\\hello.txt")				//讀取指定檔案

  //一行一行讀取檔案
  def readLine: Unit ={
    for(line<-file.getLines()){
      println(line)
    }
  }

  //一個字元一個字元的讀
  def readChar: Unit ={
    for(ele<-file){
      println(ele)
    }
  }
 
  //讀取網路上的內容
  def readNetwork: Unit ={
    val file=scala.io.Source.fromURL("http://www.baidu.com")
    for(line<-file.getLines()){
      println(line)
    }
  }
  
  readLine
  readChar
  readNetwork

  //讀取介面,自己還要看一下
}

2.讀取MySQL資料

首先,需要新增MySQL依賴

<!--引入mysql的依賴-->
   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.45</version>
   </dependency>

然後,連線資料庫讀取內容,很像java中jdbc

import java.sql.{Connection, DriverManager}

object MySQLApp {
  def main(args: Array[String]): Unit = {
    val url="jdbc:mysql://localhost:3306/mysql"
    val user="root"
    val password="600619"

    var connection:Connection=null;
    try {
      classOf[com.mysql.jdbc.Driver]      //分散式時需要用到這一句
      connection=DriverManager.getConnection(url,user,password)
      val statement=connection.createStatement();
      val resultSet=statement.executeQuery("select host,user from user;")		//user這張表是mysql自帶的一張表
      while(resultSet.next()){
        val host=resultSet.getString("host")
        val user=resultSet.getString("user")
        println(s"$host $user")
      }
    }catch{
      case e:Exception=>println("Error...")
    }finally{
      if(connection==null){
        connection.close()
      }
    }

  }
}

3.讀取XML檔案

(1)獲取: 下面三種方式都可以讀取到xml檔案,xml檔案放在了main下的resource資料夾中

  def loadXML: Unit ={
    val xml=XML.load(this.getClass.getClassLoader.getResource("src/main/resource/test.xml"))
    println(xml)
  }

  def loadXML: Unit ={
    val xml=XML.load(new FileInputStream("C:\\Users\\PYN\\IdeaProjects\\scalatrain\\src\\main\\resource\\test.xml"))
    println(xml)
  }
  
  def loadXML: Unit ={
    val xml=XML.load(new InputStreamReader(new FileInputStream("C:\\Users\\PYN\\IdeaProjects\\scalatrain\\src\\main\\resource\\test.xml")))
    println(xml)
  }

(2)讀取其中的內容:

//讀header下的field
    val field=xml\"header"\"field"
    println(field)

    //讀取所有field
    val fields=xml \\ "field"
    for(field<-fields)
      println(field)

    //讀取header下的field中的name屬性
    val names=(xml\"header"\"field"\\"@name")
    for(name<-names)
      println(name)

    //讀取name="c" 的value
    val value=(xml\\"value").filter(_.attribute("name").exists(_.text.equals("c")))
    println(value)

    //獲取header下的field
    (xml\"header"\"field").map(x=>(x\"@name",x.text,x\"@age")).foreach(println)