文件讀取
讀取本地文件,讀取csv文件,讀取網絡文件
package com.yy.scala
import scala.io.Source
/**
* 文件讀取
*/
object FileApp extends App {
val file = Source.fromFile("D:\\data\\hello.txt")
//按行讀取
for(line <- file.getLines()){
println(line)
}
//按字符讀取
for(char <- file){
println(char)
}
//按行讀取CSV文件
val csvFile = Source.fromFile("D:\\data\\test.csv")
val csvList = csvFile.getLines().toList
val title = csvList.max
println("title: "+title)
val titleArr = title.split(",")
for(i <- 1 until csvList.size){
val line = csvList(i)
val lineList: Array[String] = line.split(",")
for(i <- 0 until lineList.length){
print(titleArr(i)+":" + lineList(i) + " ")
}
println
}
//讀取網絡文件
var netFile = Source.fromURL("https://www.baidu.com")
for(line <- netFile.getLines()){
println(line)
}
}
讀取xml文件
pom.xml中引入scala-xml工具包
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-xml_2.11</artifactId>
<version>1.2.0</version>
</dependency>
讀取xml文件代碼如下
package com.yy.scala
import java.io.{FileInputStream, InputStreamReader}
import scala.xml.XML
object XmlApp extends App {
//讀取XML 項目src/main/resources路徑下
val xml1 = XML.load(this.getClass.getClassLoader.getResource("test.xml"))
println(xml1)
//讀取XML 絕對路徑
val xml2 = XML.load(new FileInputStream("D:\\data\\test.xml"))
print(xml2)
val xml3 = XML.load(new InputStreamReader(new FileInputStream("D:\\data\\test.xml")))
print(xml3)
val xml = XML.load(this.getClass.getClassLoader.getResource("test2.xml"))
//讀取header下的filed
val headerField = xml \ "header" \ "field"
println(headerField)
//讀取所有的field
val fields = xml \\ "field"
for (field <- fields) {
println(field)
}
//讀取header下field的所有name
//val filedAttributes = (xml \ "header" \ "field").map(_ \ "@name")
val filedAttributes = (xml \ "header" \ "field" \\ "@name")
for (filedAttribute <- filedAttributes) {
println(filedAttribute)
}
//讀取name=Logon的message
//val filters = (xml \\ "message").filter(_.attribute("name").exists(_.text.equals("Logon")))
val filters = (xml \\ "message").filter(x => ((x \ "@name").text).equals("Logon"))
for (filter <- filters) {
println(filter)
}
//讀取header下field的所有name的值,field的值,required的值
(xml \ "header" \ "field").map(x => (x \ "@name", x.text, x \ "@required")) .foreach(println)
}
讀取Excel文件
這里使用的是poi工具類,在pom.xml中引入
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
讀取Excel文件代碼如下
package com.yy.scala
import java.io.FileInputStream
import org.apache.poi.xssf.usermodel.XSSFWorkbook
/**
* poi讀取Excel
*/
object ExcelApp extends App {
val filePath = "E:\\data\\test.xlsx"
val fs = new FileInputStream(filePath)
val xssfWorkbook: XSSFWorkbook = new XSSFWorkbook(fs)
for(i <- 0 until xssfWorkbook.getNumberOfSheets){
//獲取表格每一個sheet
val xssfSheet = xssfWorkbook.getSheetAt(i)
val titleRow = xssfSheet.getRow(0)
for(row <- 1 to xssfSheet.getLastRowNum()){
//獲取表格每一行
val xssfRow = xssfSheet.getRow(row)
for(i <- 0 until xssfRow.getPhysicalNumberOfCells){
//獲取表格每一行的每一列
val title = titleRow.getCell(i).toString
val value = xssfRow.getCell(i).toString
print(title + ":" +value+" " )
}
println
}
}
}
連接MySQL數據庫
在pom.xml中引入MySQL驅動包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
連接MySQL讀取mysql庫user表代碼如下
package com.yy.scala
import java.sql.{Connection, DriverManager, ResultSet, Statement}
object MySQLApp extends App {
val url = "jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai"
val username = "root"
val password = "123456"
var connection: Connection = null
var statement:Statement = null
var resultSet:ResultSet = null
try {
classOf[com.mysql.cj.jdbc.Driver]
//獲取連接
connection = DriverManager.getConnection(url, username, password)
statement = connection.createStatement()
resultSet = statement.executeQuery("select host, user from user")
while (resultSet.next()) {
val host = resultSet.getString("host")
val user = resultSet.getString("user")
println(s"host:$host, user:$user")
}
} catch {
case e: Exception => println(e)
} finally {
// 釋放資源
if(resultSet != null){
resultSet.close()
}
if(statement != null){
statement.close()
}
if(connection != null){
connection.close()
}
}
}