Scala操作外部数据
Scala操作外部数据:
1、操作文件
2、操作XML
3、操作MySQL
读取文件:
object FileApp {
def main(args: Array[String]): Unit = {
//system file
val file = Source.fromFile("Users/rocky/imooc/hello.txt") (scala.io.Codec.UTF8)
def readLine(): Unit = {
for(line <- file.getLines()) { //一行一行的读取
println(line)
}
}
readLine()
//URL
def readNet(): Unit = {
val file = Source.fromURL("http://www.baidu.com")
for(line <- file.getLines()) { //一行一行的读取
println(line)
}
}
}
}
在配置文件里引入mysql的依赖:
<dependcency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependcency>
操作MySQL数据库:
object MySQLApp extends App {
val url = "jdbc:mysql://localhost:3306/mysql"
val username = "root"
val password = "root"
var connection:Connection = null
try{
// make the connection
classOf[com.mysql.jdbc.Driver]
//拿到连接
val connection = DriverManager.getConnection(url, username, password)
//create the statement, and run the select query
val statement = connection.createStatement()
val resultSet = statement.executeQuery("select host,user from user")
while(resultSet.next()){
val host = resultSet.getString("host")
val user = resultSet.getString("user")
println(s"$host, $user")
} catch {
case e:Exception => e.printStackTrace()
} finally {
//free
if(connection == null) {
connection.close()
}
}
}
}
操作XML文件:
object XMLApp extends App {
//loadXML()
readXMLAttr()
//第一种方式:load(ClassPath)
def loadXML(): Unit = {
//val xml = XML.load(this.getClass.getClassLoader.getResource("test.xml"))
//println(xml)
//第二种方式:load(is: InputStream)
//val xml = XML.load(new FileInputStream("/Users/rocky/source/scala-train/src/main/resources/test.xml"))
//第三种方式:load(reader)
//val xml = XML.load(new InputStreamReader(new FileInputStream("/Users/rocky/source/scala-train/src/main/resources/test.xml"))
}
//读取XML文件里的字段的值
def readXMLAttr(): Unit = {
val xml = XML.load(this.getClass.getClassLoader.getResource("PK.xml"))
//header/field
val headerField = xml \ "header" \ "field"
println(headerField)
//all 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 content
(xml \ "header" \ "field").map(x => (x \ "@name", x.text, x \ "@required")) .foreach(println)
}
}
Scala操作外部数据的更多相关文章
- Scala学习——操作外部数据
scala操作外部数据 一.scala读取文件及网络数据 package top.ruandb.scala.Course08 import scala.io.Source object FileApp ...
- 快速入门Python中文件读写IO是如何来操作外部数据的?
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Catalyst揭秘 Day8 Final 外部数据源和缓存系统
Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以 ...
- 【翻译】Flink 异步I / O访问外部数据
本文来自官网翻译: Asynchronous I/O for External Data Access 需要异步I / O操作 先决条件 异步I / O API 超时处理 结果顺序 活动时间 容错保证 ...
- geotrellis使用(五)使用scala操作Accumulo
要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为( ...
- STM32学习笔记(八) SPI总线(操作外部flash)
1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线:它工作在主从方式,常规需要至少4根线才能够正常工作.SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯 ...
- 找呀志_ContentResolver操作ContentProvider数据
当需要外部的应用ContentProvider该数据被添加.删.修改和查询操作.可以使用ContentResolver 类完成 要得到ContentResolver 物,可以使用Activity提供g ...
- Postman高级应用——流程控制、调试、公共函数、外部数据文件
postman客户端下载地址:https://www.getpostman.com/apps 目录 流程控制 调试 公共函数 外部数据文件 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
随机推荐
- [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (2/4)
在最后一行,书写shmfs /dev/shm tmpfs size=2g 0 用来调高数据库运行是的内存分配问题. 创建需要的路径和分配权限. 设置 oracle 用户环境参数. 修改标头显示的部分. ...
- js url传参,参数加密
前台 function encode64(input) { var output = ""; var base = new Base64(); var output = base. ...
- flask之jinjia2模板
一:渲染模板 app.run(debug=True) 开启debug模式,flask框架自动提示错误提示的页面显示. 视图函数 from flask import Flask from flask ...
- 3.xml的解析
1.xml的解析原理简介(xml是标记型文档) (1)js使用dom解析标记型文档(html)? - 根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象 - d ...
- 企业级监控软件Zabbix搭建部署之zabbix在WEB页面中的配置
企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 关于安装请看 http://www.linuxidc.com ...
- [BZOJ2600] ricehub
问题描述 乡间有一条笔直而长的路称为"米道".沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 ...
- TreeMap定制排序和自然排序
TreeMap定制排序和自然排序自然排序是实现Comparable接口的方法.代码如下: @Override public int compareTo(Object o) { if (o instan ...
- HTML基础入门学习准备篇
在学习前端的开始,让我们一起来了解什么是HTML5时代的大前端开发和全栈开发的定义 传统的前端:切图-标签和样式-实现效果 H5时代的前端: 一.需要各端的兼容开发 二.可以用于APP开发和移动站点的 ...
- 循序渐进实现仿QQ界面(三):界面调色与控件自绘
本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...
- WIN7自带端口转发渗透小技巧
目标是WIN7 X64,且开启了防火墙,想要用他的机器去访问别的机器,又不想登陆他的系统,常规办法一般是上传一个htran,然后进行转发,但是对方有杀软,有被杀的可能性,所以我用另外一种办法达到我的目 ...