一、读取数据
在Scala语言的 Source单例对象中 中, 提供了一些非常便捷的方法, 从而使开发者可以快速的从指定数据源(文本文 件, URL地址等)中获取数据, 在使用 Source单例对象 之前, 需要先导包, 即 import scala.io.Source .
1.1 按行读取
我们可以以 行 为单位, 来读取数据源中的数据, 返回值是一个 迭代器类型的对象 . 然后通过 toArray, toList 方 法, 将这些数据放到数组或者列表中即可.
注意: Source类扩展自Iterator[Char]
格式
需求
1.
在当前项目下创建
data
文件夹
,
并在其中创建
1.txt
文本文件
,
文件内容如下
:

2. 以行为单位读取该文本文件中的数据, 并打印结果
参考代码

1.2 按字符读取
Scala
还提供了
以字符为单位读取数据
这种方式
,
这种用法类似于迭代器
,
读取数据之后
,
我们可以通过 hasNext(), next()
方法
,
灵活的获取数据
格式

需求
1.
在当前项目下创建
data
文件夹
,
并在其中创建
1.txt
文本文件
,
文件内容如下
:

2. 以行为单位读取该文本文件中的数据, 并打印结果
参考代码
1.3 读取词法单元和数字
所谓的词法单元指的是
以特定符号间隔开的字符串
,
如果数据源文件中的数据都是
数字形式的字符串
, 我们可以很方便的从文件中直接获取这些数据
,
例如
:

格式
需求
在当前项目下创建
data
文件夹
,
并在其中创建
2.txt
文本文件
,
文件内容如下
:

2.
读取文件中的所有整数
,
将其加
1
后
,
把结果打印到控制台.
参考代码

1.4 从URL或者其他源读取数据
Scala
中提供了一种方式
,
可以让我们直接从指定的
URL
路径
,
或者其他源
(
例如
:
特定的字符串
)中直接读取数据。
格式

需求
1.
读取
传智播客官网
(http://www.itcast.cn)
页面的数据
,
并打印结果
.
2.
直接读取字符串
黑马程序员
,
并打印结果
.
参考代码

1.5 读取二进制文件
Scala
没有提供读取二进制文件的方法
,
我们需要通过
Java
类库来实现
.
需求
已知项目的
data
文件夹下有
05.png
这张图片
,
请读取该图片数据
,
并将读取到的字节数打印到控制台上
.
参考代码

二、写入数据
Scala
并没有内建的对写入文件的支持
,
要写入数据到文件
,
还是需要使用
Java
的类库
.
2.1 往文件中写入指定数据
需求
项目下的
data
文件夹的
3.txt
文本文件中
,
编写一句话
,
内容如下

参考代码
2.2 序列化和反序列化
在
Scala
中
,
如果想将对象传输到其他虚拟机
,
或者临时存储
,
就可以通过
序列化和反序列化
来实现了
.
序列化
:
把对象写到文件中的过程
.
反序列化
:
从文件中加载对象的过程
.
注意
:
一个类的对象要想实现序列化和反序列化操作
,
则该类必须继承
Serializable
特质
.
需求
:
1.
定义样例类
Person,
属性为姓名和年龄
.
2.
创建
Person
样例类的对象
p.
3.
通过序列化操作将对象
p
写入到项目下的
data
文件夹下的
4.txt
文本文件中
.
4.
通过反序列化操作从项目下的
data
文件夹下的
4.txt
文件中
,
读取对象
p.
参考代码
三、案例: 学员成绩表
3.1 概述
1.
已知项目下的
data
文件夹的
student.txt
文本文件中
,
记录了一些学员的成绩
,
如下
:
格式为
:
姓名 语文成绩 数学成绩 英语成绩

2.
按照学员的总成绩降序排列后
,
按照
姓名 语文成绩 数学成绩 英语成绩 总成绩
的格式
, 将数据写到项目下的 data
文件夹的
stu.txt
文件中
7.2 目的
考察
流
,
样例类
,
以及函数式编程
相关内容
.
7.3 步骤
1.
定义样例类
Person,
属性为
:
姓名
,
语文成绩
,
数学成绩
,
英语成绩
,
且该类中有一个获取总成绩的方法
.
2.
读取指定文件
(./data/student.txt)
中所有的数据
,
并将其封装到
List
列表中
.
3.
定义可变的列表
ListBuffffer[Student],
用来记录所有学生的信息
.
4.
遍历第二步获取到的数据
,
将其封装成
Person
类的对象后
,
并添加到
ListBuffffer
中
.
5.
对第
4
步获取到的数据进行排序操作
,
并将其转换成
List
列表
.
6.
按照指定格式
,
通过
BufffferWriter
将排序后的数据写入到目的地文件中
(./data/stu.txt)
7.
关闭流对象.
7.4 参考代码