1.读取行

----------------------------------------

  要读取文件中所有的行,可以调用scala.io.Source对象的getLine方法:

import scala.io.Source

  val source =Source.fromFile("myfile.txt","UTF-8")//第一个参数可以是字符串或者java.io.File
val lineIterator = source.getLines

  结果是一个迭代器,可以用其来逐条处理行

  for(1<- lineIterator) 处理1

  或者可以对其迭代器应用toArray或者toBuffer方法,将这些放到数组或者数组缓冲中去:val lines = source.getLines.toArray

  val contents = source.mkString    //将整个文件读取成为字符串

2.读取字符

-----------------------------------

  要从文件中读取单个字符,可以直接把source当做迭代器,因为source 扩展自Iterator[Char]

  for(c <- source)  处理c

  如果想查看某个字符单数又不处理的话,调用souce对象的buffered方法,这样可以用head方法查看一下字符,但是同时并不把其当做已经处理的字符集

  val source = Source.fromFile("myfile.txt","UTF-8")

  val iter = source.buffered

  while(iter.hasNext){

    if(iter.head  是符合预期的)

      处理iter.next

    else

      ..........

  }

  source.close()

import scala.io.Source;
Source.fromFile("e:/hello.txt").mkString    //将其转换成字符串

3.读取此法单元和数字

-------------------------------------

val tokens =source.mkString.split("//S+")    //很快的读取源文件中所有以空格隔开的词法单元

将字符转转换成为数字,可以用toInt或者toDouble方法。

val numbers = for(w <- tokens) yield w.toDouble
//或者
val numbers = tokens.map(_.toDouble)    //记住,你总是可以使用java.util.Scanner类来处理同时包含文本和数字的文件

//从控制台读取数据

print("How old are you ")    //在缺省的情况下系统会自动的使用Consle,因此不需要对print和readInt使用限定词
val age = readInt() //或者使用readDoubel或者readLong

//通过正则表达式

import scala.io.Source;
/**
* Created by stone on 2018/9/17.
*/
object FileDemo {
def main(args: Array[String]): Unit = {
val s = Source.fromFile("E:\\hello.txt","gb2312");
val lines = s.getLines;
//进行迭代
for(line <- lines){
println(line);
}
val str = Source.fromFile("E:\\hello.txt","gb2312").mkString;
val it = str.split("\\s+");
for(i<-it){
println(i);
}
}
}

正则表达式

----------------------------------

  (1)href正则表达式

  

Pattern p =Pattern.compile("<a\\s*href=\"([\u0000-\uffff&&[^u005c\u0022]]*)\"");

  Matcher m = p.matcher(str);

  while(m.find()){

    String s = m.group();
    System.out.println(s);
}

  

scala学习笔记(8)文件和正则表达式的更多相关文章

  1. [Scala]Scala学习笔记六 文件

    1. 读取行 读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法: val source = Source.fromFile(&qu ...

  2. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  3. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  4. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  5. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  6. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  7. Django:学习笔记(8)——文件上传

    Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...

  8. APUE学习笔记3_文件IO

    APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...

  9. 【数学建模】MATLAB学习笔记——函数式文件

    MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...

随机推荐

  1. BZOJ 2281 Luogu P2490 [SDOI2011]黑白棋 (博弈论、DP计数)

    怎么SDOI2011和SDOI2019的两道题这么像啊..(虽然并不完全一样) 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?i ...

  2. sqli-labs29-31关Background-6 服务器(两层)架构

    首先介绍一下29,30,31这三关的基本情况: 服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务器,真正提供web服务的是php服务器.工作流 ...

  3. sqli-labs(9)

    基于时间的GET单引号盲注 0x01爱之初试探 在我们注入了SQL代码之后,存在以下两种情况: 如果注入的SQL代码不影响后台[数据库]的正常功能执行,那么Web应用的页面显示正确(原始页面). 如果 ...

  4. wannafly 挑战赛9 E 组一组 (差分约束)

    链接:https://www.nowcoder.com/acm/contest/71/E 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 65536K,其他语言131072K Spec ...

  5. springcloud(十七):服务网关 Spring Cloud GateWay 熔断、限流、重试

    上篇文章介绍了 Gataway 和注册中心的使用,以及 Gataway 中 Filter 的基本使用,这篇文章我们将继续介绍 Filter 的一些常用功能. 修改请求路径的过滤器 StripPrefi ...

  6. 读取hibernate.cfg.xml文件

    new Configuration().configure().buildSessionFactory() new Configuration()默认是读取hibernate.properties 所 ...

  7. JDK源码--HashMap(之resize)

    1.HashMap源码阅读目标了解具体的数据结构(hash及冲突链表.红黑树)和重要方法的具体实现(hashCode.equals.put.resize...) 2.重要方法 hashCode 与 e ...

  8. Python 字符串与列表去重

    最近面试中出现频率比较高的字符串和列表的去重pstr = 'abcadcf'# 字符串去重# 1.使用集合 --没有保持原来的顺序 print(set(pstr)) # 2.使用字典 -- 没有保持原 ...

  9. C#调用C++的库 P/Invoke工具集

    p/Invoke可以使用工具辅助自动生成,以减少混淆 1.官方的支持 http://visualstudiogallery.msdn.microsoft.com/site/search?query=p ...

  10. oracle 查看并行sql语句的并行数量和如何开并行

    1.执行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000; 2.如何查看该sql语句的并行数量: se ...