补充:

http://blog.csdn.net/lyrebing/article/details/20369445

http://developer.51cto.com/art/200907/134957.htm

http://nerd-is.in/2013-08/scala-learning-files-and-regular-expressions/

读取行

//读取文件中的所有行,可以调用scala.io.Source对象的getLines方法
object LineIO{
def main(args:Array[String]):Unit = {
val source = Source.fromFile("F:\\way.txt","UTF-8")
//第一个参数可以是字符串或者是java.io.File
//第二个参数可省略
val lineIterator =source.getLines
//结果是一个迭代器 for(l<-lineIterator)
println(l)
//或者可以对迭代器应用toArray或toBuffer方法,将行放到数组或数组缓冲当中
val lines = source.getLines.toArray
//将整个文件读取成一个字符串
//val contents = source.mkString;
source.close
}
}

读取字符(一个一个字符处理)

//按字符处理
object CharIO{
def main(args:Array[String]):Unit={
val source =Source.fromFile("F:\\way.txt","UTF-8")
val iter= source.buffered
//println(iter.length)
while(iter.hasNext){
print(iter.next.toString)
}
source.close
}
}

读取词法单元和数字

object NumIO{
def main(args:Array[String]):Unit={
val source = Source.fromFile("F:\\num.txt","UTF-8")
val tockens = source.mkString.split(" ")
for(w<-tockens){
println(w.toInt)
}
//另一种方法
val numbers = for(w<-tockens)
yield w.toDouble
for(num<-numbers){
println(num)
} //另一种方法
val numbers2 = tockens.map(_.toDouble)
}
}

 从URL或其他源读取

//读取非文件源的方法
object URLIO{
def main(args:Array[String]):Unit={
//从URL读取
val source= Source.fromURL("http://www.baidu.com","UTF-8")
val lineIterator =source.getLines
for(l<-lineIterator){
println(l.toString())
} //从给定的字符串读取--调试有用
val source2= Source.fromString("Hello world") //从标准输入读取
val source3 = Source.stdin
}
}

运行结果为网址的html

读取二进制文件

Scala没有提供读取二进制文件的方法,需要使用Java类库

object URLIO{
def main(args:Array[String]):Unit={
val file = new File("F:\\info.bin")
val in = new FileInputStream(file)
val bytes = new Array[Byte](file.length.toInt)
in.read(bytes)
in.close
}
}

写入文本文件

object WriteIO{
def main(args:Array[String]):Unit={
val out = new PrintWriter("F:\\numbers.txt")
for(i<-1 to 100)
out.println(i)
out.close
}
}

 

Scala学习笔记--文件IO的更多相关文章

  1. Java学习笔记--文件IO

    简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...

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

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

  3. 《python基础教程(第二版)》学习笔记 文件和素材(第11章)

    <python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...

  4. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  5. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  6. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  7. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

  8. java学习笔记之IO编程—内存流、管道流、随机流

    1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...

  9. [Python学习笔记]文件的读取写入

    文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...

随机推荐

  1. uva 10012

    题目意思:  给定m个圆的半径,现在要求找到一个矩形使得每一个球都以地面相切,要求输出最小的矩阵的长度 #include <iostream> #include <algorithm ...

  2. Qt on Android

    Qt on Android Episode 7(翻译) http://blog.csdn.net/foruok/article/details/46323129 Android基础整理之四大组件Act ...

  3. 浅谈JavaScript浮点数及其运算

    原文:浅谈JavaScript浮点数及其运算     JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题 ...

  4. QComboBox调用clear函数崩溃的问题

    项目有个需求是这样的: QComboBox需要动态清楚添加Item列表,并且之前设置了QComboBox当前index改变的信号,一旦这个clear调用,当前index就改变,因为一旦改变,信号就发出 ...

  5. 【HDOJ】1494 跑跑卡丁车

    DP,将能量映射为0~14,注意当选择这圈加速的时候,这圈就不能再储存能量,同时能量14可能转化为10. #include <cstdio> #include <cstring> ...

  6. Redis分布式缓存 教程以及DEMO

    原文地址:http://blog.csdn.net/qiujialongjjj/article/category/1800171 redis demo源码下载:http://download.csdn ...

  7. HDU_2034——集合A-B

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...

  8. 高级私人定制西服品牌:XUAN PRIVE 为定制而生_乐活_onlylady女人志

    高级私人定制西服品牌:XUAN PRIVE 为定制而生_乐活_onlylady女人志 高级私人定制西服品牌:XUAN PRIVE 为定制而生

  9. 40 个重要的 HTML5 面试问题及答案

    本文将列出40个重要的HTML 5面试问题及答案,祝各位求职顺利. 目录 介绍 Canvas和SVG图形之间的区别是什么? 如何使用Canvas和SVG绘制矩形? 什么是CSS选择器? 如何使用ID值 ...

  10. lesson3:java的锁机制原理和分析

    jdk1.5之前,我们对代码加锁(实际是对象加锁),都是采用Synchronized关键字来处理,jdk1.5及以后的版本中,并发编程大师Doug Lea在concurrrent包中提供了Lock机制 ...