加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

文件和正则表达式

发布时间:2020-12-14 04:17:07 所属栏目:百科 来源:网络整理
导读:1.读取行 要读取文件中的所有行,可以调用scala.io.Source对象的getLines方法。 importscala.io.Source//第一个参数可以是java.io.File,或者String。valsource=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt","UTF-8")//返回一

1.读取行

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

importscala.io.Source

//第一个参数可以是java.io.File,或者String。
valsource=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt","UTF-8")
//返回一个迭代器
valiter=source.getLines()
for(v<-iter)println(v)
//用完source对象后,需要关闭。
source.close()

getLines()返回结果是一个迭代器,可以逐行处理这些行,或者可以使用迭代器的toArray,或者toBuffer方法,将其转换为数组或数组缓冲。另外,source对象使用后需要关闭。


下面例子,也可以直接使用mkString方法,直接将整个文件转化为一个字符串:

valiterable=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt").getLines()
println(iterable.mkString("||"))


2.读取字符

首先,通过API查看Source对象的定义:

abstractclassSourceextendsIterator[Char]withCloseable

source是一个抽象类,继承Iterator[Char]类。可以直接把Source当做迭代器。

如果想查看某个字符,但是不想处理掉它的话,可以使用使用source对象的buffered方法,然后使用head方法查看下一个字符。

//统计文件中有多少个t字符
valsource1=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt","UTF-8")
valbuffered_charater_source1=source1.buffered
varcharacter_count=0
while(buffered_charater_source1.hasNext)
{
if(buffered_charater_source1.head=='t'){character_count+=1}
buffered_charater_source1.next()
}
println("t字符的个数是:"+character_count)
source1.close()


3.读取词法单元和数字:

这部分读取文件中以空格隔开的单词。如果需要将String转化为数值,可以使用toInt,或toDouble方法。下面程序也演示了如何从控制台读取输入。

/*
*文件中存储以一个(或多个)空格分隔的数字(整数、Double)。读取这些数字,从命令行输入一个因子,
*然后将这些数字乘以这个因子,将这些数字逗号分隔输出,并计算总和。
*/
valsource2=Source.fromFile("D:/test/develop/nums.txt","UTF-8")
valnums_source=source2.getLines().mkString.split("s+")

println("请输入乘数因子:")
importscala.io.StdIn
valvetor=StdIn.readInt()
valnums_output=nums_source.map{_.toDouble*vetor}
//valnums_output=for(w<-nums_source)yield{(w.toDouble)*vetor}
println("乘以乘数因子后的数组:"+nums_output.mkString(","))
source2.close()

scala中的String.split复用了Java中的String.split方法,详细说明可以参考下面的文章:

http://www.cnblogs.com/davidhaslanda/p/4050471.html


4.读取其他格式(数据源)文件:

除了从文本文件读取内容,还可以从“网址”、“字符串”、“标准输入”和“二进制文件”等渠道读取文件内容。

首先,需要介绍普通文本文件和二进制文件的区别:



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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读