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);
}

  

最新文章

  1. Java开发中经典的小实例-(打印输入重复的值)
  2. c++程序员必知的几个库
  3. Atitit usrQBM2331 参数格式化规范
  4. Java 第一天
  5. LoadRunner error -27728
  6. Nginx常见502错误
  7. HttpWebRequest BeginGetResponse EndGetResponse
  8. 利用Navicat实现MySQL数据库结构对比和同步
  9. Hadoop日志以及日志的格式和命名组成
  10. 如何去掉修改Joomla、joomlart及其模版版权、标志、图标的方法
  11. arcgis api 4.x for js 结合 react 入门开发系列&quot;esri-loader&quot;篇(附源码下载)
  12. Injection
  13. mybatis根据数据库表结构自动生成实体类,dao,mapper
  14. linux解压类型总结
  15. 【iCore4 双核心板_FPGA】例程四:Signal Tapll 实验——逻辑分析仪
  16. 整型数字转utf8
  17. 微软BI 之SSRS 系列 - 如何实现报表导航 Navigation 和钻取 Drill Down 的效果
  18. jboss5+EJB3+MDB Queue
  19. 每日英语:Does Evolution Want Us To Be Unhappy?
  20. SAP ECC6安装系列三:关于SAP,你也许想知道的一些事

热门文章

  1. windows10 下 gcc/g++ 的安装
  2. 序列式容器————dequeue
  3. JMS学习四(ActiveMQ消息过滤)
  4. vue几种简单的传值方式
  5. sqli-labs(11)
  6. 在一个tomcat中配置多个tomcat服务器 111
  7. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比(转载)
  8. a标签点击,页面自动刷新
  9. metrics+spring+influxdb
  10. MySQL——索引