[Scala]Scala学习笔记六 文件
1. 读取行
读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法:
val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
val lineIterator = source.getLines()
for(line <- lineIterator){
println(line)
}
source.close()
source.getLines返回结果为一个迭代器,可以遍历迭代器逐条处理行.
如果想吧整个文件当做一个字符串处理,可以调用mkString方法:
val content = source.mkString
备注
在用完Source对象后,记得调用close方法进行关闭
2. 读取字符
读取字符,可以直接把Source对象当做迭代器使用,因为Source类扩展了Iterator[Char]:
val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8")
for(c <- source){
print(c + " ")
}
3. 从URL或其他源读取数据
Source对象有读取非文件源的方法:
// 从URL中读取数据
val sourceUrl = Source.fromURL("http://xxx", "UTF-8")
// 从字符串中读取数据
val sourceStr = Source.fromString("Hello World!")
// 从标准输入读取数据
val sourceStd = Source.stdin
4. 读取二进制文件
Scala并没有提供读取二进制文件的方法.但是你可以使用Java类库来完成读取操作:
val file = new File(fileName)
val in = new FileInputStream(file)
val bytes = new Array[byte](file.length.toInt)
in.read(bytes)
in.close()
5. 写入文本文件
Scala并没有内置的对写入文件的支持.但是可以使用java.io.PrintWriter来完成:
val out = new PrintWriter("/home/xiaosi/exception.txt")
out.println("Hello World")
out.println("Welcome")
out.close()
6. 访问目录
目前Scala并没有用来访问某个目录中的所有文件,或者递归的遍历所有目录的类,我们只能寻求一些替代方案.
利用如下代码可以实现递归遍历所有的子目录:
// 递归遍历目录
def subDirs(dir: File) : Iterator[File] = {
val children = dir.listFiles().filter(_.isDirectory)
children.toIterator ++ children.toIterator.flatMap(subDirs _)
}
val file = new File("/home/xiaosi/test")
val iterator = subDirs(file)
for(d <- iterator){
println(d)
}
[Scala]Scala学习笔记六 文件的更多相关文章
- nodejs学习笔记<六>文件处理
nodejs处理文件模块:fs —> var fs = require(‘fs’); 读取文件:readFileSync & readFile 读取文件路径为绝对: 读取结果需要to ...
- Python学习笔记六--文件和输入输出
6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
随机推荐
- 为什么@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
Spring Boot会自动根据jar包的依赖来自动配置项目,例如当你项目下面有HSQLDB的依赖,Spring Boot会自动创建默认的内存数据库的数据源DataSource, 但我们使用Mybat ...
- Java学习第一周博客
20145307<Java程序设计>第一周学习总结 教材学习内容总结 首先学习安装Java有两种方法,一种是用Eclipse直接编辑输出,另一种方法是用记事本之后用win+G开启cmd运行 ...
- xstream中几个注解的含义和用法(转)
XStream是个很强大的工具,能将Java对象和xml之间相互转化.xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数.它调用方式也非常简单:从xml对象转化为jav ...
- C# 删除文件以及文件夹
代码如下: /// <summary> /// 删除文件夹以及文件 /// </summary> /// <param name="directoryPath& ...
- POJ 1208 模拟
2017-08-28 15:07:16 writer:pprp 好开心,这道题本来在集训的时候做了很长很长时间,但是还是没有做出来,但是这次的话,只花了两个小时就做出来了 好开心,这次采用的是仔细分析 ...
- 自学Java测试代码一数据类型、数组使用
2017-08-22 21:23:37. writer:pprp package test; public class helloWorld { int maxn = 123; //常量,需要定义一个 ...
- jmeter-对响应数据进行unicode转码
1,请求接口成功后,返回数据为unicode编码,查看不方便
- js实现类名的添加与移除
方法1:使用className属性: 方法2:使用classList API: //用于匹配类名存在与否 function reg(name){ return new RegExp('(^|\\s)' ...
- 在win7虚拟机中装sql server---待整理
本科学数据库的时候,为了做作业,需要在自己电脑上装sql server.但是每次都装不上,总是有各种小问题通不过.最后问学长,才采用了在虚拟机里装数据库的方法,在虚拟机中可以不用担心弄乱本机系统. 为 ...
- 《深入理解mybatis原理2》 Mybatis初始化机制详解
<深入理解mybatis原理> Mybatis初始化机制详解 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程 ...