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操作外部数据的更多相关文章

  1. Scala学习——操作外部数据

    scala操作外部数据 一.scala读取文件及网络数据 package top.ruandb.scala.Course08 import scala.io.Source object FileApp ...

  2. 快速入门Python中文件读写IO是如何来操作外部数据的?

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  3. Catalyst揭秘 Day8 Final 外部数据源和缓存系统

    Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以 ...

  4. 【翻译】Flink 异步I / O访问外部数据

    本文来自官网翻译: Asynchronous I/O for External Data Access 需要异步I / O操作 先决条件 异步I / O API 超时处理 结果顺序 活动时间 容错保证 ...

  5. geotrellis使用(五)使用scala操作Accumulo

    要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为( ...

  6. STM32学习笔记(八) SPI总线(操作外部flash)

    1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线:它工作在主从方式,常规需要至少4根线才能够正常工作.SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯 ...

  7. 找呀志_ContentResolver操作ContentProvider数据

    当需要外部的应用ContentProvider该数据被添加.删.修改和查询操作.可以使用ContentResolver 类完成 要得到ContentResolver 物,可以使用Activity提供g ...

  8. Postman高级应用——流程控制、调试、公共函数、外部数据文件

    postman客户端下载地址:https://www.getpostman.com/apps 目录 流程控制 调试 公共函数 外部数据文件 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有 ...

  9. R学习笔记(4): 使用外部数据

    来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...

随机推荐

  1. asp.net 几种传值方法的分析

    本文转自:http://www.cnblogs.com/shengtianlong/archive/2010/08/11/1797608.html ASP.NET页面传值方法的优缺点及适用范围 1. ...

  2. EasyUi 表格自适应宽度

    第一次接触EasyUi想要实现表格宽度自适应,网上找了好多文章,都没有实现,有网友实现了可是自己看不懂.可能是太简单高手都懒得分享,现在把自己的理解和实现记录一下,希望可以帮到向自己一样的菜鸟,步骤如 ...

  3. webpack打包过程及开发过程

    1.传统: 1)分模块去定义js.js中要导出将来要被打包的方法module.exports 2)定义main.js入口文件(主文件).在此文件中,导入引用的js文件 var {add} = requ ...

  4. STM32之模拟串口设计

    一.设计用途: 公司PCB制成板降成本,选择的MCU比项目需求少一个串口,为满足制成板成本和项目对串口需求,选择模拟一路串口. 二.硬件电路: 三.设计实现: 工具&软件:STM32F030R ...

  5. 基于双TMS320C6678+双XC6VSX315T的6U VPX高速数据处理平台

    基于双TMS320C6678+双XC6VSX315T的6U VPX高速数据处理平台   一.板卡概述 板卡由我公司自主研发,基于VPX架构,主体芯片为两片 TI DSP TMS320C6678,两片V ...

  6. 脚本_统计 Linux 进程相关数量信息

    #!bin/bash#作者:liusingbon#功能:统计 Linux 进程相关数量信息,running(运行的进程),sleeping(睡眠中的进程),stoped(停止的进程),zombie(僵 ...

  7. 记录卸载5.7版本MySQL并安装5.6版本MySQL

    新版本有些问题很烦,也没时间去找解决办法,只好用回5.6,首先卸载6.7的MySQL: sudo apt-get autoremove --purge mysql-server-* apt remov ...

  8. java 创建匿名对象及声明map list时初始化

    java 创建匿名对象 类似于c# 中的 new { a:"aaa",b:"bbb"}; 1 创建匿名对象Object myobj = new Object() ...

  9. Flutter-TextField初始化值和選中取值

    import 'package:flutter/material.dart'; class PersonalCenterInformationScreen extends StatefulWidget ...

  10. loj6038「雅礼集训 2017 Day5」远行 树的直径+并查集+LCT

    题目传送门 https://loj.ac/problem/6038 题解 根据树的直径的两个性质: 距离树上一个点最远的点一定是任意一条直径的一个端点. 两个联通块的并的直径是各自的联通块的两条直径的 ...